重新连接到丢失的 X11 会话

重新连接到丢失的 X11 会话

我使用 X11 转发ssh在我的 Windows 机器上运行 Linux 应用程序,当网络断开时,它会丢失正在运行的所有内容。有没有类似screenX11的东西?

答案1

X普拉或者Xpra前叉声称正是这样:

所以基本上是屏幕用于远程 X 应用程序。

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

[remote] $ xpra start :13

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

[local] $ xpra attach ssh:remote:13

现在,远程机器上的 X 显示器 13 上显示的任何内容都会显示在本地:

[remote] $ DISPLAY=:13 xeyes

答案2

您正在寻找虚拟网络控制器。原理有点类似于 screen:运行一个 VNC 服务器(后台SCREEN进程)和一个 VNC 客户端(前台screen进程)。 VNC服务器是一个X服务器,因此您可以在其中运行X应用程序。

在 Linux 机器上运行 VNC 服务器,在 Windows 机器上运行客户端。您有多种实现可供选择;一种可能性是紧VNC。 TightVNC 存在于许多 Linux 发行版中(如果您的发行版中没有,请安装它或选择不同的实现),并且有一个 Windows 客户端。

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

答案3

实际上,您可以将 X 转发到screen.唯一要做的就是设置窗口$DISPLAY内的内容screen,使其与窗口外的内容相同。

程序

ssh -X进入远程机器后,输入

$ echo $DISPLAY

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

$ export DISPLAY=localhost:N.0

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

笔记:对于每个screen窗口,环境变量是独立的。因此,对于每个窗口,您可能需要单独设置。

参考

答案4

我发现X2Go非常擅长这一点。它像 X11 那样创建单独的窗口(单一应用程序模式),并且延迟比 xpra 好得多,我发现 xpra 无法使用。

相关内容