通过两个 SSH 隧道转发 X11

fro*_*ost 4 linux ssh ssh-tunneling x11

为了工作,我必须从本地计算机通过计算机 A 进行 ssh 访问计算机 B。问题是计算机 A 没有 X11 转发,而且我没有超级用户权限来更改它。我在机器 B 上确实拥有超级用户权限,并且它打开了 X11 转发。

有没有办法将 X11 从 B 通过 A 转发到我的本地计算机,而无需在 A 上打开 X11 转发?

我尝试运行 ssh -t -X user@A ssh -X user@Bssh -t user@A ssh -X user@B 但机器 A 仍然X11 forwarding request failed on channel 0在登录时输出。

rud*_*ier 5

将其添加到您的 ~.ssh/config 中:

Host BviaA
  HostName      hostB
  ProxyCommand  ssh user@hostA nc %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

然后ssh -X user@BviaA应该工作

请注意,在上面的配置部分中,我用来Host BviaA使发生的情况更加明显。您还可以使用Host hostB让它完全透明地工作:(ssh -X user@hostB就好像不需要网关一样。)

或者作为无需任何配置更改的单行测试:

ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
Run Code Online (Sandbox Code Playgroud)