假设网络是这样的:
A(192.68.0.1)--------------------B(192.68.0.2)------------------C(192.68.0.3)
A是我的ssh服务器,C是目标ssh服务器,我可以从A telnet到B(我的帐户不是root)。
B是不允许其他人使用ssh登录的服务器,但B可以通过ssh登录到C。
是否可以通过ssh将C从A连接到B?
发布于 2012-02-18 19:52:19
如果您可以在B上运行程序,则可以使用类似于simpleproxy的命令将TCP连接转发到C。
然后,您从A SSH到B上的某个端口(而不是22),这会将您的连接转发到C。由于SSH会话是A<->C,因此所有内容仍将被加密。
发布于 2012-02-18 20:21:26
好的,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进行端口转发的所有内容
https://stackoverflow.com/questions/9340814
复制相似问题