以前我一直有个误区,必须在安装了图形化界面的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
  • MobaXterm v21.5(xshell也可以,理论上任意支持X11-forwarding的ssh客户端都可以)
  • securecrt或者putty,配置对应会话的转发X11,并重新连接会话

使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张

在sshd_config中开启X11-forwarding

vim /etc/ssh/sshd_config
systemctl restart sshd //修改后重启sshd生效

使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张

 

安装xorg*图形化程序及依赖

yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock -y

执行xclock测试是否成功

使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张

安装chromium

添加 EPEL 软件源:yum install epel-release
安装:yum -y install chromium dbus-x11
启动:chromium-browser --no-sandbox

安装firefox

yum install -y firefox dbus-x11
yum groupinstall 'Fonts'
yum install -y mesa-libGLES-devel.x86_64 mesa-dri-drivers
使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张

安装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
使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张
使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张
在ssh客户端上运行的qq音乐

安装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
使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张
使用ssh客户端的X11-forwarding在远程linux主机上运行GUI程序 经验教程 第2张

总结

任何虚拟机和远端电脑上的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也通常有更好的性能

 

 

via:https://zgao.top/%E4%BD%BF%E7%94%A8ssh%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84x11-forwarding%E5%9C%A8%E8%BF%9C%E7%A8%8Blinux%E4%B8%BB%E6%9C%BA%E4%B8%8A%E8%BF%90%E8%A1%8Cgui%E7%A8%8B%E5%BA%8F/

 

 

 

 

 

参与评论