在多跳 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
我使用此处的说明生成多跳 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