我有主机 A、B 和 C。从主机 AI 只能通过 ssh 访问 B。从 BI 可以访问 C。我希望能够在 C 上运行 X11 程序并将显示转发到 A。
我尝试过这个:
A$ ssh -XB B$ ssh -XC 加元 xclock 错误:无法打开显示:
但它不起作用。
答案1
有几种方法可以做到这一点,我更喜欢的是转发 ssh 端口:
首先连接机器B,通过B转发[localPort]到C:22
A$ ssh -L [localPort]:C:22 B
接下来,使用 [localPort] 通过此新创建的隧道从 A 连接到 C,转发 X11
A$ ssh -X -p [localPort] localhost
现在我们可以在 C 上运行 X11 程序并让它们显示在 A 上
C$ xclock
[localPort] 可以是您尚未在 A 上监听的任何端口,为了简单起见,我经常使用 2222。
答案2
你试过
A$ ssh -Y B
B$ ssh -Y C
C$ xlclock
-Y 标志“启用可信的 X11 转发”。
答案3
使用端口转发可以轻松实现这一点:
A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock
端口 localhost:2022 通过 B 转发到 C:22 通过 localhost:2022 SSH 到 C 正常使用 X
答案4
假设问题是中间机器没有 X,但它配置为允许转发 X11,只需安装 xauth。
在基于 yum 的系统上 (fedora、redhat、centos):
B$ sudo yum install xauth
在基于 apt 的系统上(debian、ubuntu):
B$ sudo apt-get install xauth