我有三台电脑,A,B和C.A已经发起了一个反向ssh隧道到B.
ssh -nTNx -p 443 -R 22222:localhost:22 [user]@[server]
如果我login到B,我可以使用'ssh -p 22222 localhost',我得到一个login提示A.如果我尝试'ssh -p 22222 [B的公共IP]',它不起作用
我希望能够做的是有C连接到A,而不需要login到B.所以从CI可以'ssh -p 22222 [公共IP的B]',我会得到A的login提示。
我正在使用debian和shorewall,并且对事情的工作有一个基本的了解。 我尝试了REDIRECT和DNAT规则的各种组合,但没有任何运气。 我已经尝试使用相同的端口(22222)和一个不同的端口(转发22223从C到本地主机22222)。
有任何想法吗?
请参阅“工作中的任何人的远程端口转发!” 本网页的部分。 文章build议你应该添加
GatewayPorts yes
选项到你的HostB上的sshd_config 。 这应该会导致HostB上的远程端口转发,以侦听其所有networking接口。
你有没有在你的ssh命令中试过-g标志? 这就是告诉它允许远程系统连接到本地端口。 所以你会这样做:
hostB$ ssh -g -L22222:localhost:22 user@hostA
然后从主机C,这应该工作:
hostC$ ssh -p22222 user@hostB