正如标题所述。
主机 A 充当服务器(堡垒主机,随便你怎么称呼它)。
现在,主机 B 执行:
ssh -R 2222:localhost:22 用户@A
因此,TCP 套接字在 A 处生成,但它绑定到 2222@回送即阻止与其进行远程连接。
如何将 127.0.0.1 更改为 0.0.0.0或其他任何东西更明智?
答案1
你遗漏了规范bind_address
的可选部分-R
。在ssh
文档(链接至微软)写道,
默认情况下,服务器上的 TCP 侦听套接字将仅绑定到环回接口。这可以通过指定 来覆盖
bind_address
。空的bind_address
或地址*
表示远程套接字应侦听所有接口。bind_address
仅当启用服务器的GatewayPorts
选项时,指定远程才会成功(请参阅sshd_配置(5))。
您正在使用该参数的三元组版本,但您需要四元组版本:
-R port:host:hostport -R [bind_address]:port:host:hostport
因此,要允许任何人连接到远程服务器上的监听端口,您需要确保GatewayPorts
在服务器的sshd_config
和使用如下命令变体:
ssh -R :2222:localhost:22 user@A
前导冒号 ( :
) 还暗示前导星号通配符,允许从任何地方进行连接。我个人认为,这个带有通配符的版本更清楚地表明了所写内容是有意为之:
ssh -R *:2222:localhost:22 user@A