SSH端口转发


8

我想通过公共访问服务器(公共)连接到NAT后面的计算机(本地)。

在本地:

ssh -g -R 8000:localhost:22 user@public

然后在公开场合:

ssh -p 8000 user@public 

但是我越来越 error: Connection refused.

登录公共服务器时,可以通过以下方式验证隧道是否正常运行:

ssh -p 8000 localhost

这将在本地计算机上打开ssh。

我是否怀疑公共服务器应该充当透明代理?或如何使其工作。

Answers:


11

出于安全目的,SSH远程端口转发将默认绑定到localhost / loopback。通常不希望允许其他主机访问您转发的端口。

要覆盖此行为,您需要做两件事:

  • GatewayPorts在服务器上启用该选项。
  • *在客户端上指定一个绑定地址,或绑定到所有地址。

    ssh -R \*:8000:localhost:22 user@public
    

转义星号以确保您的外壳不会展开。


0

这看起来更像是远程计算机公用上的设置问题。默认情况下,openssh sshd(我猜是使用的那个)将GatewayPorts设置为no,这将强制远程端口转发仅侦听localhost。

解决方案是编辑/ etc / ssh / sshd_config(或等效文件),将GatewayPorts设置为yes或clientspecified。如果您选择稍后的版本,则必须将隧道请求更改为-R *:8000:localhost:22之类的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.