我在让ssh隧道在docker swarm集群中为我的容器工作时遇到问题。
本地计算机上的ssh连接:
ssh -L 7180:test.XXX:7180 user@XXX
在远程机器上的Dockerfile中:
EXPOSE 7180
容器开始:
docker -H test:2379 --tlsverify run -d -p 7180:7180 --net=my-net
我试图通过以下方式在Firefox中进行连接:
localhost:7180
不幸的是,该连接在远程计算机上被拒绝:
channel 3: open failed: connect failed: Connection refused
“ docker container ls”为端口打印以下内容:
xxx:7180->7180/tcp
在我的容器“ netstat -ntlp | grep LISTEN”中打印:
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN -
我对此并不陌生,但毕竟我到目前为止所读的内容仍然可以正常工作。我使用“ --net = my-net”是因为我想稍后设置自己的网络。我对“ --net = host”有同样的问题。我究竟做错了什么?
答案 0 :(得分:0)
我可以和它一起工作
ssh -D localhost:7180 -f -C -q -N user@XXX
并使用
xxx:7180
在我的浏览器(而不是localhost)中。 本地主机和--net = host不适用于ssh -L。
答案 1 :(得分:0)
ssh命令应为:
ssh -L 7180:127.0.0.1:7180 user@XXX
然后从浏览器中转到:
http://127.0.0.1:7180
我避免使用“ localhost”,因为即使没有配置IPv6,某些机器也会将其映射到IPv6。
在测试此隧道时,请通过向该服务器执行ssh
来确保您的应用程序正在侦听远程服务器,并直接在服务器上向127.0.0.1:7180 {{ 1}} docker ps的输出。