多跳ssh隧道后ssh进入远程主机

时间:2016-04-06 12:18:41

标签: linux ssh ssh-tunnel

我使用此处的说明生成多跳ssh-tunnel:

  

http://blog.naenius.com/2011/06/ssh-tunneling-across-multiple-hosts-in-linux/

构建像

这样的隧道
  

'本地主机' - > '主机1' - > '主机2'

特别是,我用过:

ssh -t -t -L[LOCAL_PORT]:localhost:[PORT_ON_A] [USER]@[SERVER_A] 'ssh -L[PORT_ON_A]:localhost:[PORT_ON_B] [USER]@[SERVER_B]'

,执行后,在host2上打开一个终端。

既然我已经这样做了,我想通过ssh直接连接到localhost的host2,我天真地希望通过以下方式实现:

ssh localhost:[LOCAL_PORT]

然而,我只得到:

  

ssh:无法解析主机名localhost:2345:不是名称或服务   已知

有什么想法吗?

编辑:

试过机器IP:

ssh [MACHINE_IP]:[LOCAL_PORT]

但它也不起作用。

然而,这里有一些有用的东西

如果我这样做:

ssh -L 1234:[SERVER_B]:22 [USER]@[SERVER_A]

然后我可以通过以下方式直接从我的机器复制到SERVER_B:

scp -P 1234 local_path_to_file [USER] @ 127.0.0.01:

但是这个:

ssh 127.0.0.01:1234

返回

  

ssh:无法解析主机名127.0.0.01:1234:名称或服务不是   已知

不确定是否有透露

EDIT2:这是/ etc / hosts

cat /etc/hosts                                                                                                                                                    
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

2 个答案:

答案 0 :(得分:2)

ssh 127.0.0.01:1234

OpenSSH ssh utility,这可能就是您在这里使用的,并不允许您以这种方式指定端口。它取整个字符串" 127.0.0.01:1234"并尝试将其解析为主机名。

运行此方法的正确方法是:

ssh -p 1234 127.0.0.1

答案 1 :(得分:1)

除非有防火墙限制拒绝您直接从[PORT_ON_B]访问SERVER_A,否则您可以这样做:

ssh -L[LOCAL_PORT]:[SERVER_B]:[PORT_ON_B] [USER]@[SERVER_A]

之后:

ssh localhost:[LOCAL_PORT] 

如果有一个SSH服务器正在监听[SERVER_B][PORT_ON_B]

你的方法也应该有用。您应检查两个SSH服务器是否支持隧道连接(尽管默认情况下已启用它,但可以在服务器配置上禁用它)。