SSH中多跳后如何进行X11转发?

SSH中多跳后如何进行X11转发?

我有以下 SSH 流程:root@HostA -> root@HostB -> root@HostC -> user@HostD

我想对 HostD 上的 Firefox 进行 X11 转发一直返回到 HostA,因为 A、B 和 C 无法访问互联网。

我遇到了一些问题,所以我决定一步一步地解决它。考虑到所有命令都在 HostA 上执行,以下是我的流程:

1号航站楼

A$ su -
A$ ssh -L 2222:HostB:3333 root@HostB -N

2 号航站楼

A$ su -
A$ ssh root@HostB
B$ ssh -L 3333:HostC:4444 root@HostC -N

3号航站楼

A$ su -
A$ ssh root@HostB
B$ ssh root@HostC
C$ ssh -L 4444:HostD:22 user@HostD -N

4号航站楼

A$ su -
A$ ssh -X -p 2222 user@localhost

在终端 4 上执行最后一个命令后,我收到以下错误:

ssh _exchange_identification: Connection closed by remote host

在终端 1 上显示以下消息:

channel 2: open failed: connect failed: Connection refused

我已经尝试重新组织所有端口,我知道上述过程太重复了,但我想确保我涵盖了所有内容,但似乎找不到错误。我做错了什么?

我还有一个旧版本的 SSH,因此我无法使用 -J 选项。谢谢。

编辑:我确保每个主机都已将 X11Forwarding、AllowTcpForwarding 和 GatewayPorts 设置为是的on /etc/ssh/sshd_config,然后重启sshd服务。这次我又多做了几个测试。

测试 1

1号航站楼:A$ ssh -L 2222:HostB:22 root@HostB -N

2 号航站楼:A$ ssh -Y -p 2222 root@localhost

并且它有效!

测试 2

1号航站楼:A$ ssh -L 2222:HostB:3333 root@HostB -N

2 号航站楼:B$ ssh -L 3333:HostC:22 root@HostC -N

3 号航站楼:A$ ssh -Y -p 2222 root@localhost

它给了我之前的错误。

测试 3

1号航站楼:B$ ssh -L 3333:HostC:22 root@HostC -N

2 号航站楼:A$ ssh -p 3333 root@HostB

它还给了我之前的错误。

所以我在第二个本地端口转发方面遇到了困难。我是不是漏掉了什么?

相关内容