Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 多跳ssh隧道后ssh进入远程主机_Linux_Ssh_Ssh Tunnel - Fatal编程技术网

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

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隧道:

它建造了一条像

“本地主机”->“主机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]
然后,我可以通过以下方式直接从我的机器复制到服务器上:

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