我在 myServer 上运行此命令:
ssh -g -p 9922 -f myuser@serverOnOpenInternet -L 1212:serverBehindFirewall:80 -N
serverOnOpenInternet 在端口 9922 上运行 sshd。(不是我的电话)
一旦我在 myServer 上运行相关命令,我就可以执行以下操作:
wget http://localhost:1212/
并成功到达serverBehindFirewall的索引页面。
但是:如果我尝试从另一台机器上点击:
http://myServer:1212/
连接超时,我无法通过隧道连接到 serverBehindFirewall。
我已经在我的 mac 上测试了 -g 开关,并验证了它的工作原理与我期望的一样。我知道这些是 ssh 的不同版本/实现。但据我所知,Ubuntu 14.04 上的 ssh 也应该支持 -g 开关。 (它在手册页中提到)
请帮忙 :)
答案1
您可能需要在 -L 选项上指定绑定地址。喜欢:
-L 192.168.1.100:1212:serverBehindFirewall:80
根据要求,从下面粘贴:
/etc/ssh/ssh_config 中的选项“GatewayPorts”设置为“yes”解决了该问题。
这显然与指定“GatewayPorts yes”的效果(几乎)相同。它绑定到指定的地址。选项“GatewayPorts yes”自动绑定到通配符地址 (0.0.0.0),使远程客户端能够连接。如果未指定,并且没有使用 IP-Address 进行绑定 (-L : : : ) ,则仅绑定环回地址 127.0.0.1,因此远程主机无法连接