SSH 使用 X11 协议在服务器运行图形程序
最近在 VPS 上用到的一个 GUI 程序,没想到在无桌面环境下的 Linux 系统也能运行。网上搜索了解了一番,其原理是通过 X11 协议实现的,需要在本机及服务器两端安装软件支持。下面演示运行方法。
SSH 客户端配置
SSH 客户端不能直接呈现图形界面,需要安装 Xming 软件配合。
安装后在开始菜单程序文件夹里打开 XLaunch,设置依次默认下一步,直到这个界面勾选 NO ACCESS CONTROL
选项保存退出。
之后打开 SSH 客户端会话设置,勾选 X11 转发选项(笔者这里用的是 SecureCRT。PuTTY 设置里也有相关选项。Xshell 未测试,据说要安装 Xmanager)。
到此 SSH 客户端设置完成。如果你没用上面 SSH 客户端,可以用 MobaXterm,它内置 X11 支持。
服务器配置
笔者服务器环境为 CentOS 7 x64(Minimal)。如果直接运行 GUI 程序,会有如下报错。
[root@test ~]# ./FileName ./FileName: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
这个问题可以通过 yum install -y gtk2
解决。
再次运行提示 Gtk-WARNING **: cannot open display
错误,需要安装 X11 依赖包。
yum install -y xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1
之后再修改 /etc/ssh/sshd_config
文件,确保下面两个参数值改为如下。
X11Forwarding yes X11UseLocalhost no
systemctl restart sshd
刷新 SSH 配置文件,退出终端重新登录。
重新登录有个 /root/.Xauthority
文件缺失错误,不用理会,它会自动创建,下次登录就不会提示。
运行 GUI 程序
运行个 GUI 程序试试,例如 xclock 时钟。先 yum install -y xclock
安装,然后运行 xclock
命令。
如无意外,就会显示图形界面了(记得先打开之前安装的 Xming 程序)。
再运行个 Chromium 浏览器测试,用下面命令安装,然后 chromium-browser --no-sandbox
命令运行。
yum install epel-release yum -y install chromium
如果程序界面里的文字显示乱码,运行下面命令安装字体重试。
yum install -y dejavu-sans-mono-fonts wqy-zenhei-fonts