我有三台计算机,A、B 和 C。A 已启动到 B 的反向 ssh 隧道。
ssh -nTNx -p 443 -R 22222:localhost:22 [user]@[server]
如果我登录到 B,我可以使用“ssh -p 22222 localhost”,然后我会得到 A 的登录提示。如果我尝试“ssh -p 22222 [B 的公共 IP]”,它不起作用
我希望能够让 C 连接到 A 而无需登录 B。因此从 CI 可以“ssh -p 22222 [B 的公共 IP]”,然后我会得到 A 的登录提示。
我使用的是 debian 和 shorewall,对工作原理有基本的了解。我尝试过各种 REDIRECT 和 DNAT 规则的组合,但都失败了。我尝试过使用相同的端口 (22222) 和不同的端口 (将 22223 从 C 转发到本地主机上的 22222)。
有任何想法吗?
答案1
请参阅“为工作中的任何人提供远程端口转发!”部分此网页。本文建议你添加
GatewayPorts yes
选项添加到您sshd_config
的 HostB 上。这应该会导致 HostB 上的远程端口转发监听其所有网络接口。
答案2
您是否尝试过-g
ssh 命令中的标志?这告诉它允许远程系统连接到本地端口。因此,您可以执行以下操作:
hostB$ ssh -g -L22222:localhost:22 user@hostA
然后从主机 C 执行此操作:
hostC$ ssh -p22222 user@hostB