2012-02-18 148 views
0

假设网络是这样的:ssh隧道通过telnet服务器

A(192.68.0.1)-------------------- B(192.68.0.2 )------------------ C(192.68.0.3)

A是我的ssh服务器,C是一个目标ssh服务器,我可以从A远程登录到B (我的帐户不是root)。

B是一个服务器不允许ssh从其他人登录,但B可以通过ssh登录到C.

是否有可能通过SSH连接C从A到B?

+0

为superuser.com(或者serverfault.com)更好的适合 – rene 2012-02-18 11:42:19

+0

你可能* *能从A-> B进行Telnet会话,然后从B-> A和从B-> C进行SSH会话以及某种类型的管道,但是您所做的所有操作仍将从A-> B清除,所以,为什么要麻烦? – mkoistinen 2012-02-18 11:51:17

+0

首先你把鸡放在船上,因为狐狸不会吃鸡饲料。然后你离开这只鸡,回来找狐狸。一旦你在对方的狐狸和鸡,你抓住鸡,并把他带回原来的一面。你离开鸡,但采取鸡饲料。然后你用你最后一次旅行回来,并得到鸡。 – synthesizerpatel 2012-02-18 12:02:38

回答

0

如果你可以运行在B项目则可以使用类似simpleproxy将有关B(不是22)的TCP连接C.

然后你从A ssh到一些端口,这会将您的连接到C.因为SSH会话是A < - > C,所以一切仍然会被加密。

+0

我会尝试。谢谢! – ylc 2012-02-18 12:10:49

+0

我试图弄清楚这一段时间,它最终奏效了!它很简洁,无需在A上透露我的帐户! – ylc 2012-02-18 14:04:38

0

确定的Telnet到B 实际上你可以ssh到自己在B,但下面的命令可能无法工作,但尝试第一

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有127.0.0.1在2200上收听,而不是0.0.0.0,这个技巧不会工作......但是如果是这样......那么你可以连接到端口2200上的ssh到b并且它会打到c

ssh 192.68.0.2:2200

我中有你ssh到本地主机上的b,因为我不记得的命令没有产生一个外壳和IM懒得看它了...但如果上述解决方案不工作,你将无法重定向端口与ssh没有根,你将不得不改变配置文件b

你必须添加 GatewayPorts yes到s在/ etc/sshd的/ conf目录SHD配置文件/ sshd_config中

http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch09_02.htm - 这个谈论所有关于端口转发的ssh

+0

所以,如果我得到它,然后失败? %netstat -an | grep 2200并导致 **。2200 *。* 0 0 24576 0 LISTEN – ylc 2012-02-18 12:42:57

+0

我不知道,* .2200有点令人困惑...尝试在该端口上用ssh连接到'b' 2200 ... – Ryan 2012-02-18 12:49:13

+0

我会认为它是正确听,但你不知道,直到你尝试:) – Ryan 2012-02-18 12:49:42