我有以下設定:
[OpenSSH server] <---> [Docker container with SSH client] <---> [host machine]
我的 Docker 容器是某種 SSH 連線管理員。我正在轉發其連接埠的 OpenSSH 伺服器上運行的服務是一個 Web 伺服器。
從容器內部,我可以成功地通過curl
隧道端口。但是,當我嘗試將相同連接埠發佈到我的主機並嘗試curl
從主機發佈時,我得到
curl: (56) Recv failure: Connection reset by peer
這是我用來設定隧道的 SSH 指令:
ssh -nNT -L 3000:*:9413 OPENSSH_SERVER_URL
我正在使用運行這個容器
docker run --rm --name test -p 3000:3000 ssh-connection-manager
如果我登入容器,我可以curl
得到回應:
docker exec -it --entrypoint sh test
# curl localhost:3000
Hello!
我無法透過已發佈的連接埠從主機執行相同的操作:
$ curl localhost:3000
curl: (56) Recv failure: Connection reset by peer
我缺什麼?我懷疑這是 SSH 客戶端上的連接選項或 OpenSSH 伺服器上的配置,但我不確定。