为什么即使启用了GatewayPorts,也不能远程连接到反向SSH隧道端口?


20

我需要对我们部门的主机进行持续的SSH访问,该主机的IP地址是动态分配的。我已经建立了从目标主机到我们其中一台主机的远程SSH隧道,该隧道确实构成了静态IP地址:

ssh -f -N -g -R :22223:localhost:22 tunnelhost

当我将SSH指向22223隧道主机上的本地端口时,隧道可以正常工作。我的问题是,尽管我似乎无法将隧道绑定到除localhost以外的任何东西-即,当我尝试远程SSH到时tunnelhost:12323,没有开放的端口可以接收它。我也尝试过:

ssh -f -N -R :22223:localhost:22 tunnelhost -o GatewayPorts=yes

但是仍然没有运气。Netstat向我显示:

[me@tunnel_host ~]$ netstat -an | grep 22223
tcp        0      0 127.0.0.1:22223         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:22223               :::*                    LISTEN

确认隧道仅绑定到本地主机。我在带有防火墙d-cmd的隧道主机上添加了端口例外,并确保没有网络硬件干扰该连接。有什么想法吗?

干杯,詹姆斯。

Answers:


29

您需要GatewayPorts=yes在配置中启用SSHd(/etc/ssh/sshd_config),而不是在客户端中启用,以便能够绑定到远程端口上的环回以外的接口。

-o GatewayPorts=yes

传递给ssh命令时,仅适用于本地端口。


达斯Android,谢谢您的回复。看来-g和-o GatewayPorts仅适用于(-L)ocal隧道是正确的。为了完整起见,以下是有关此问题的更多信息,以防将来其他人遇到。bugs.debian.org/cgi-bin/bugreport.cgi?bug=228064
James Paul Turner

3
GatewayPorts=clientspecified是一种较为安全的设置,请参见askubuntu.com/questions/50064/reverse-port-tunnelling。在这种情况下,空绑定地址(:22223:localhost:2为)。
Michael Goerz

1
我认为GatewayPorts=clientspecified设置本身并不是更安全,但是它可以更好地控制将哪些连接绑定到通配符,而不是仅将所有连接都绑定到通配符。
尼克

另外,在修改sshd_config之后(如果您忘记了),请重新启动sshd
尼克

⚠️请注意 GatewayPorts=yes将打开转发到世界的端口。
ccpizza
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.