重新连接到丢失的X11会话


27

我正在使用X11转发ssh来在Windows机器上运行Linux应用,当网络中断时,它会丢失所有正在运行的东西。有什么与screenX11 类似的东西吗?


澄清。为什么不只是使用screen?还是XVNC?您在Linux机器上运行屏幕,并且当网络断开时,重新连接并用于screen -DR重新连接会话。
nix

@nix可以用于X应用程序吗?
Michael Mrozek

2
@nix我认为不适screen用于gui应用程序。
Abdullah Jibaly 2011年

当然,screen需要从xterm运行。
nix

Answers:


32

XpraXpra fork声称是:

因此,基本上,它是远程X应用程序的屏幕

我已经有一段时间没有使用它了,但是当我尝试它时,它运行得很好。您在远程计算机上启动服务器:

[remote] $ xpra start :13

然后,从本地计算机连接到服务器:

[local] $ xpra attach ssh:remote:13

现在,远程计算机的X显示器13上显示的所有内容都会在本地显示:

[remote] $ DISPLAY=:13 xeyes

4
还有WinSwitch,一眼看上去它集成了xpra和其他相关软件。
吉尔斯(Gillles)“所以-别再邪恶了”

6

您正在寻找VNC。该原理在某种程度上类似于屏幕:运行VNC服务器(背景SCREEN程序)和VNC客户端(前台screen程序)。VNC服务器是X服务器,因此您可以在其中运行X应用程序。

在Linux框上运行VNC服务器,在Windows框上运行客户端。您可以从几种实现中进行选择。一种可能是TightVNC。TightVNC存在于许多Linux发行版中(如果不在您的发行版中,请安装或选择其他实现),并且有Windows客户端。

如果您的两台计算机在网络上的距离不是很近(如果它们之间有防火墙或存在窃听者的危险),则需要通过ssh隧道传输VNC流量。ssh将本地端口5900转发到远程端口5900(5900对应于显示器:0,使用5901:1等)。


4

实际上,您可以将X转发到screen。唯一要做的就是$DISPLAYscreen窗口中窗口相同。

程序

ssh -X到远程机器,类型

$ echo $DISPLAY

并通常复制结果localhost:N.0。然后screen在本地screen窗口中输入,

$ export DISPLAY=localhost:N.0

之后,运行 X在屏幕窗口中需要的程序即可。

注意:对于每个screen窗口,环境变量都是独立的。因此,对于每个窗口,您可能需要分别设置。

参考文献


1
您好,欢迎来到unix.SE。由于您链接的解决方案的细节很简单,因此最好在此处明确地重写它们。如果askubuntu.com上的帖子出了点问题,这样可以保留答案。当然,保持链接的存在也是一个好主意,因为它有助于获取您的资料。
2014年

2
我尝试了此解决方案,但是如果不终止正在运行的X应用程序,就无法关闭ssh会话。这在某种程度上违背了它的目的...我应该如何与远程主机断开连接以使远程应用程序运行?
Tonin 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.