SSH端口转发

我想通过公共可访问的服务器(公共)连接到我的电脑(本地)在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。