我想从客户端A在机器C上远程运行X应用程序。连接到这台机器的唯一方法是使用机器B(防火墙)作为一个跳点:
A→B→C
到目前为止,简单的ssh按预期工作,但我不能让X11转发运行。
我发现了一些类似的问题,但我认为他们都假设X11在B上运行。 如何通过附加服务器启用SSH X11转发等解决scheme? 似乎没有与我的设置工作。
难道你需要在B上运行X服务器来将X11从C转发到B,将B转发到A?
根据这篇文章,我在A上设置了〜/ ssh / ssh_config: http : //sshmenu.sourceforge.net/articles/transparent-mulithop.html
当我尝试通过使用连接并从C转发X11
$A: ssh -XC
我通过B连接到C,但没有X11转发(虽然在B和C上启用):
$C: echo $DISPLAY $C: glxgears Error: couldn't open display (null)
我不确定是否因为我的configuration/设置而存在问题,或者这个问题一般不会出现。如果有类似问题或经验的人可以帮我解决问题,我将不胜感激!
我不相信X11转发将在描述的多跳场景中工作。
但是,如果您首先build立了一个ssh连接A-> B,并将端口转发到C:22,然后通过build立的“直接”连接与X11连接,连接到C,这应该工作得很好。
像下面这样:
A $ ssh -L2200:C:22 -NB (可能把它放到后台)
其次是:
A $ ssh -X -p2200 localhost
如果您使用的是ProxyCommand,则不要使用-X作为ProxyCommand。 ProxyCommand应该禁用所有高级function,您只需要ProxyCommand的最低限度。
当使用ProxyCommand从A到B连接到C上的端口22时,A上的ssh客户端将与C上的ssh服务器进行通信。这意味着B上没有任何事情会影响哪些function你可以在A和C之间使用。由于通信在通过B时被encryption,所以B不可能有任何影响。
为什么X11转发不能为你工作的解释必须在A或C上find。你在A上input的命令对我来说看起来是正确的,所以有两个解释我可以想到:
在使用X11转发的多跳设置线中,每台机器上都需要xauth。 这是机器B上唯一需要的X11应用程序。机器A是唯一需要X服务器的机器。 机器C当然需要您的X11应用程序,但不需要X服务器。 从理论上说,你甚至可以在机器A上没有X11的应用程序。