透過 Docker 發布的連接埠存取 SSH 本機隧道

透過 Docker 發布的連接埠存取 SSH 本機隧道

我有以下設定:

[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 伺服器上的配置,但我不確定。

相關內容