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

ssh into remote host after multi-hop ssh tunnel

我使用此处的说明生成多跳 ssh 隧道:

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

一样建造隧道

'localhost' -> 'host1' -> 'host2'

特别是,我使用了:

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 从本地主机直接连接到 host2,我天真地希望通过以下方式实现:

ssh localhost:[LOCAL_PORT]

然而,我只得到:

ssh: Could not resolve hostname localhost:2345: Name or service not known

有什么想法吗?

编辑:

试机IP:

ssh [MACHINE_IP]:[LOCAL_PORT]

但还是不行。

但是,这里有一些东西确实有效

如果我这样做:

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

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

scp -P 1234 local_path_to_file [用户]@127.0.0.01:

但是这个:

ssh 127.0.0.01:1234

returns

ssh: Could not resolve hostname 127.0.0.01:1234: Name or service not known

不确定这是否揭示了问题

EDIT2:这是/etc/hosts

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

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

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

之后:

ssh localhost:[LOCAL_PORT] 

前提是有 SSH 服务器正在侦听 [SERVER_B][PORT_ON_B]

您的方法应该也有效。您应该检查两个 SSH 服务器是否都支持隧道(虽然它默认启用,但可以在服务器配置中禁用)。

ssh 127.0.0.01:1234

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

运行 的正确方法是:

ssh -p 1234 127.0.0.1