使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序
偶然在修改sshd配置文件过程中,发现了X11-forwarding这个配置项。该选项支持远程调用linux上主机的图形化界面程序。
以前我一直有个误区,必须在安装了图形化界面的linux系统上才能运行GUI程序,而作为无界面的linux Sever 本身不支持GUI程序。直到发现X11-forwarding才直到这个想法是错误的。因为linux的图形化界面也不过是一个软件罢了,并非系统内核支持。既然是软件,那么任意linux都可以安装实现图形化界面。
什么是X11-forwarding?
X11 中的 X 指的就是 X 协议;11 指的是采用 X 协议的第 11 个版本。
X11-forwarding 说的简单来说就是:
可以通过一个支持 X Server 的 SSH 客户端,例如:MobaXterm。 连接到远程 Linux 服务器,可以在本地通过 MobaXterm 运行操作一个远程 Linux 服务器上有图形界面的程序。
X 协议原理简介
Linux 本身是没有图形化界面的,所谓的图形化界面系统只不过中 Linux 下的应用程序。这一点和 Windows 不一样。Windows 从 Windows 95 开始,图形界面就直接在系统内核中实现了,是操作系统不可或缺的一部分。Linux 的图形化界面,底层都是基于 X 协议。
X 协议由 X server 和 X client 组成:
X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 X client。
X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。
测试环境
- centos7 Server (腾讯云上任意开的一台CVM)
- MobaXterm v21.5(xshell也可以,理论上任意支持X11-forwarding的ssh客户端都可以)
本来想用weterm的,可惜不支持X11-forwarding。
在sshd_config中开启X11-forwarding
systemctl restart sshd //修改后重启sshd生效
安装xorg*图形化程序及依赖
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock -y
执行xclock测试是否成功
安装firefox
yum install -y firefox dbus-x11 yum groupinstall 'Fonts'
安装qq音乐
wget https://dldir1.qq.com/music/clntupate/linux/AppImage/qqmusic-1.1.3.AppImage &&chmod +x qqmusic-1.1.3.AppImage ./qqmusic-1.1.3.AppImage --no-sandbox
安装pycharm写代码
以往大家普遍认为在非桌面环境的linux开IDE写代码是不太可能的事。但测试后在linux开IDE确实是可以的事。
wget https://download.jetbrains.com.cn/python/pycharm-professional-2021.3.2.tar.gz && tar xvf pycharm-professional-2021.3.2.tar.gz cd ./pycharm-2021.3.2/bin && chmod +x pycharm.sh ./pycharm.sh
总结
任何虚拟机和远端电脑上的Linux应用程序均可以使用SSH和X11 Forwarding进行连接。
使用SSH和X11 Forwarding可以解决很多远程桌面相关的问题。例如我们很多时候使用虚拟机安装Linux系统,其实并不是要使用Linux的桌面环境,而是使用Linux的命令行和一些GUI程序。
对于命令行程序,使用SSH完全可以解决。而对于GUI程序,我们也可以通过文章介绍的X11 Forwarding来解决。
和正常的连接到Linux再进行操作相比,SSH和X11 Forwarding的优势其实很明显:
- 避免进入Linux的GUI环境,而可以在我们熟悉的Windows/macOS环境下使用Linux的各种功能
- 避免配置Virtualbox Guest软件、Hyper-V的Enhanced Session等虚拟机的增强软件
- 由于避开了图形界面的模拟,SSH和X11 Forwarding也通常有更好的性能
本文使用的腾讯云上的cvm进行测试,考虑到延迟和带宽的关系,偶尔会有卡顿的现象(比如开浏览器浏览网页)但是大部分情况(如开IDE写代码)没有任何问题。使用x11-forwarding也可以增加linux的可玩性。
赞赏微信赞赏支付宝赞赏
目前为止有一条评论