内存占满时,如何搭建局域网电脑实现GUI独立窗口远程运行应用?
解决方案:利用X Window的网络透明性实现远端应用本地独立窗口运行
你说的完全没错!这种场景正是X Window系统的核心设计目标之一——网络透明性:应用程序可以在远端服务器(你的另一台局域网电脑)上运行,而把GUI界面输出到本地的X显示服务器(你的Ubuntu 14.04主机),每个应用都会以独立窗口呈现,和本地程序完全融合,根本不需要像VNC那样操作整个远端桌面。
下面分两种方案实现,从简单的原生X转发到更稳定的进阶工具:
方案一:原生X11转发(快速上手)
这是最直接的方法,利用SSH的X转发功能,无需额外安装复杂工具:
1. 配置远端机器(运行应用的电脑)
- 确保远端机器安装了OpenSSH服务器:如果是Ubuntu系统,执行
sudo apt-get install openssh-server - 开启SSH的X11转发:编辑
/etc/ssh/sshd_config,确保以下配置项存在且未被注释:X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost no - 重启SSH服务生效:
sudo service ssh restart - 安装你需要的应用:比如
sudo apt-get install google-chrome-stable libreoffice
2. 在本地Ubuntu 14.04主机操作
- 打开本地终端,用带X转发的SSH登录远端机器:
(如果想启用压缩加快传输,用ssh -X 远端用户名@远端机器局域网IPssh -YC 远端用户名@远端IP,Y表示信任X11转发,C开启压缩) - 登录成功后,直接在远端终端里启动应用:
你会发现Chrome和LibreOffice的窗口直接出现在本地屏幕上,和本地程序完全一样!google-chrome & libreoffice writer &
方案二:Xpra(进阶稳定方案)
原生X转发有个缺点:网络波动可能导致应用崩溃,而且断开SSH连接后应用会终止。Xpra是专门为这种场景设计的工具,支持断开重连、后台运行应用,甚至可以跨平台使用,体验更稳定:
1. 两端安装Xpra
- 远端Ubuntu机器安装:
sudo add-apt-repository ppa:xpra/stable sudo apt-get update sudo apt-get install xpra - 本地Ubuntu 14.04安装同样的命令(如果是其他系统也有对应包)
2. 远端启动Xpra会话并运行应用
- 在远端机器启动一个Xpra会话(比如指定显示编号为10):
xpra start :10 - 进入该会话并启动应用:
启动后可以关闭远端的终端,应用会在后台继续运行。xpra attach :10 google-chrome & libreoffice calc &
3. 本地连接远端Xpra会话
- 在本地终端执行:
此时远端运行的Chrome、LibreOffice窗口会直接出现在本地屏幕上,就算断开连接,下次再执行这条命令还能恢复之前的窗口状态。xpra attach ssh://远端用户名@远端IP:10
注意事项
- 确保两台机器在同一局域网,防火墙允许SSH(默认22端口)和Xpra(默认10000+显示编号端口,比如1010)的通信。
- 原生X转发时,本地的
xhost默认已经允许SSH转发的连接,无需额外配置;如果直接用export DISPLAY=本地IP:0的方式,需要先在本地执行xhost +远端IP(不推荐,不如SSH转发安全)。 - Ubuntu 14.04的X Server版本较老,部分新应用可能存在兼容性问题,尽量选用对应版本的应用包。
内容的提问来源于stack exchange,提问作者Henry




