以前我一直有个误区,必须在安装了图形化界面的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,并重新连接会话
在sshd_config中开启X11-forwarding
vim /etc/ssh/sshd_config systemctl restart sshd //修改后重启sshd生效
安装xorg*图形化程序及依赖
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock -y
执行xclock测试是否成功
安装chromium
安装firefox
安装qq音乐
安装pycharm写代码
以往大家普遍认为在非桌面环境的linux开IDE写代码是不太可能的事。但测试后在linux开IDE确实是可以的事。
总结
任何虚拟机和远端电脑上的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/