Linux 多跳ssh隧道后ssh进入远程主机
我使用此处的说明生成了一个多跳ssh隧道: 它建造了一条像 “本地主机”->“主机1”->“主机2” 特别是,我使用了:Linux 多跳ssh隧道后ssh进入远程主机,linux,ssh,ssh-tunnel,Linux,Ssh,Ssh Tunnel,我使用此处的说明生成了一个多跳ssh隧道: 它建造了一条像 “本地主机”->“主机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 -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]
然后,我可以通过以下方式直接从我的机器复制到服务器上:
scp-p 1234本地路径到文件[USER]@127.0.0.01:
但这是:
ssh 127.0.0.01:1234
返回
ssh:无法解析主机名127.0.0.01:1234:未解析名称或服务
已知的
我不确定这是否能说明问题
编辑2:这是/etc/hosts
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
除非防火墙限制禁止您直接从
服务器\u A
访问[PORT\u ON\u B]
,否则您可以执行以下操作:
ssh -L[LOCAL_PORT]:[SERVER_B]:[PORT_ON_B] [USER]@[SERVER_A]
之后:
ssh localhost:[LOCAL_PORT]
前提是有一个SSH服务器正在侦听[SERVER\u B][PORT\u on\u B]
你的方法也应该有效。您应该检查两个SSH服务器是否都支持隧道(尽管默认情况下它是启用的,但在服务器配置中它可能被禁用)
可能就是您在这里使用的,不允许您以这种方式指定端口。它使用整个字符串“127.0.0.01:1234”并尝试将其解析为主机名
正确的运行方法是:
ssh -p 1234 127.0.0.1
需要明确的是,“localhost”不是一个变量或占位符,而是字面上的“localhost”一词,对吗?更正@elelias。它的字面意思是“localhost”。如果这不起作用,可能是您的
/etc/hosts
未正确建立。尝试改用计算机的IP地址。尝试不使用“01”。像这样:127.0.0.1。此外,您是否可以发布/etc/hosts
file?127.0.0.1的内容也会导致相同的问题。我粘贴了主机的内容,希望对您有所帮助。主连接的SSH端口是用-p
指定的,而不是:suffix
ssh-p[LOCAL_PORT]localhost
aha!这很有效,非常感谢。想做出一个我可以接受的答案吗?是的,其他人评论了这个解决方案,我提出了一个我可以接受的答案,但他没有回答。接受这个,因为这是正确的答案。
ssh -p 1234 127.0.0.1