假设网络如下:
A(192.68.0.1)--------------------B(192.68.0.2)--------------------C(192.68.3)
A是我的ssh服务器,C是目标ssh服务器,我可以从A远程登录到B(我的帐户不是root)。
B是一个不允许ssh从其他服务器登录的服务器,但B可以通过ssh登录到C。
可以通过ssh将C从A连接到B吗?
如果你可以在B上运行程序,你可以使用simpleproxy之类的东西将TCP连接转发到C。
然后,您从A通过SSH连接到B上的某个端口(不是22),这将把您的连接转发到C。由于SSH会话是A<->,因此所有内容都将被加密C.
ok telnet到b实际上,您可以在b上对自己进行ssh,但以下命令可能不起作用,但请先尝试
ssh -L0.0.0.0:2200:192.68.0.3:22 127.0.0.1
。。。如果sshd没有在b上运行…那么ssh到c
ssh -L0.0.0.0:2200:192.68.0.3:22 192.68.0.3
做
netstat -an | grep 2200
—在b(192.68.0.2)上执行此操作
如果netstat在2200上监听127.0.0.1而不是0.0.0.0,那么这个技巧就不会奏效。。。但如果真的。。。然后,您可以在端口2200上连接到ssh到b,它将命中c
ssh 192.68.0.2:2200
我让你ssh到b上的localhost,因为我记不起不生成shell的命令了,而且我也懒得查找它。。。但是,如果上面的解决方案不起作用,您将无法在没有root的情况下使用ssh重定向端口,您将不得不更改b上的配置文件
你必须添加GatewayPorts yes
到/etc/sshd/conf/sshd_config 中的sshd配置文件
http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch09_02.htm--这说明了使用ssh 的所有端口转发