在使用 MobaXterm 连接远程服务器的时候遇见了 X11-forwarding ,后面跟着一个亮眼的 红叉,如下图。强迫症看见它十分不爽,于是想办法干掉它。
什么是X11-forwarding?
X11 中的 X 指的就是 X 协议;11 指的是采用 X 协议的第 11 个版本。
X11-forwarding 说的简单明白点就是:可以通过一个支持 X Server 的 SSH 客户端,例如:MobaXterm。 连接到远程 Linux 服务器,可以在本地通过 MobaXterm 运行操作一个远程 Linux 服务器上有图形界面的程序。
X 协议原理简介
X协议Linux 本身是没有图形化界面的,所谓的图形化界面系统只不过中 Linux 下的应用程序。这一点和 Windows 不一样。Windows 从 Windows 95 开始,图形界面就直接在系统内核中实现了,是操作系统不可或缺的一部分。Linux 的图形化界面,底层都是基于 X 协议。
X 协议由 X server 和 X client 组成:
X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 X client。
X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。
举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是 X client 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server 说:“请在鼠标点击的位置,画一个圆”。最后,X server 就响应 X client 的请求,在鼠标点击的位置,绘制并显示出一个圆。
让Linux支持X11-Forwarding
我的使用环境:CentOS 7
安装X11-Forwarding的支持
$ sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
这一堆安装的,实际上是X Client。其中最后的 xclock 是用来测试X11Forwarding功能的。
修改sshd的配置
$ sudo vi /etc/ssh/sshd_config
X11Forwarding Yes
$ sudo service sshd restart
测试 X11-forwarding 效果
运行以下命令测试效果,正常情况下会出现一个时钟界面。
$ xclock
xclock 界面视图
支持 X11-forwarding 的 SSH 客户端
- XShell 6
- MobaXterm 11
网友评论