我想通过公共可访问的服务器(公共)连接到我的电脑(本地)在NAT后面。
在本地:
ssh -g -R 8000:localhost:22 user@public
然后公开:
ssh -p 8000 user@public
但我收到error: Connection refused.
当我login到公共服务器时,我可以validation隧道正在工作:
ssh -p 8000 localhost
这在本地计算机上打开ssh。
我怀疑公共服务器应该作为透明代理吗? 或者如何使它像那样工作。
为了安全起见,SSH远程端口转发将默认绑定到localhost / loopback。 允许其他主机访问转发的端口通常是不可取的。
要覆盖这个行为,你需要做两件事:
GatewayPorts选项。 指定一个绑定地址,或*绑定到客户端上的所有地址。
ssh -R \*:8000:localhost:22 user@public
转义星号以确保您的shell不会扩展它。
这看起来更像是远程计算机上公共设置的问题。 默认情况下,openssh sshd(我猜是正在使用的那个)设置GatewayPorts变成了no,这迫使远程端口转发只在本地主机上侦听。
那么解决scheme就是编辑你的/ etc / ssh / sshd_config(或者等价的),把GatewayPorts设置为yes或者指定给clients。 如果你select了以后,你将不得不把你的隧道请求改为-R *:8000:localhost:22。