我有以下设置:
[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 服务器上的配置,但我不确定。