如何通过两个 SSH 隧道转发 X?

如何通过两个 SSH 隧道转发 X?

我正在尝试从工作电脑运行家用电脑上的 X 程序。基本设置如下:

Arch Linux 工作电脑 -> OpenBSD SSH 路由器(在家) -> Arch Linux 家用电脑(带有 SSH)

我从未真正尝试过这样做,也不太清楚该怎么做。我该如何实现它?

当我尝试做的时候

$(work computer) ssh -Y home-ip
..
$(home router) ssh -Y private-ip

我进入最后一条隧道“X11 转发请求在通道 0 上失败”

我该如何正确地做到这一点?

编辑:我忘记在家用电脑的 sshd 上启用 X 转发。我现在已经解决了这个问题,但当我执行简单的命令时似乎什么也没发生,比如xterm。它只是呆在那里,大概是试图在我的路由器上显示 xterm 窗口,而不是在我的工作电脑上

答案1

如何将工作计算机上的端口转发到家用计算机的端口 22,然后再ssh -Y转发到该本地端口?

例如,

ssh -L 2222:private-ip:22 router-ip
ssh -Y localhost:2222

答案2

您所做的应该可以工作,但您需要xauth在路由器上安装该程序,以便它能够为 SSH 创建的虚拟 X11 显示创建安全密钥。您需要xauth在任何一台机器上ssh -X安装该程序ssh -Y,即使您实际上没有在那里运行任何 X 应用程序,但只是将其用作通向其他地方的一步。

连接到家用电脑后,检查$DISPLAY变量。它应该是这样的localhost:10。如果不是,请返回路由器上的 shell 并$DISPLAY在那里检查。

相关内容