我使用此处的说明生成多跳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
答案 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服务器是否支持隧道连接(尽管默认情况下已启用它,但可以在服务器配置上禁用它)。