1 简介
X11 是经典的 C/S 架构,分为 Server 和 Client,并定义了一系列协议用于 C-S 间通信。X Server 负责图形界面的显示和用户的输入,而 X Client 需要连接到 X Server,请求 X Server 绘制图形界面,同时从 X Server 接受用户的输入并做出响应。
事实上,X Server 就像一个画布,Linux 上的 X Client 就像一个画家。Server 同显示器等硬件打交道,为画家(Client)提供绘图的必要服务。画家处理数据并对用户的做出响应,在画布上展示出来。
举个实际的例子:假设此时你正在用一台 Windows 主机通过 SSH 连接到另一台 Linux 主机,要在 Linux 上运行 Wireshark 并把图像显示在 Windows 上,那么 X Server 在 Windows 上,X Client 在 Linux 上。
看上去这有点违反直觉。不过只要记住:在哪里看到画面,哪里就有 X Server。
**X11 转发是一个允许运行在远端服务器上的 X11 程序(具有 GUI 的程序)在本地机器上显示图形界面的机制。**远端服务器不需要安装完整的 X11 系统框架,只需要安装个别必须的软件包。
2 安装
2.1 远端服务器
- 安装
xorg-xauth
软件包。(xauth,软件包名视发行版而定。) - 修改
/etc/ssh/sshd_config
:X11Forwarding yes # 以下三项都是默认值 AllowTcpForwarding yes X11UseLocalhost yes X11DisplayOffset 10
- 重启
sshd.service
。
2.2 本地客户端
2.2.1 类 Unix 系统
- 安装
xorg-xauth
软件包。(xauth,软件包名视发行版而定。) - 在使用 ssh 命令连接远端服务器时加上
-X
选项;或者将 ssh config 中的ForwardX11
设为yes
。
2.2.2 Windows
安装 vcxsrv
或者使用集成了 X Server 的终端软件。
3 常见问题
与 DISPLAY 变量相关的问题,如提示 DISPLAY 变量未设置等。
断开本次 SSH 连接,重新连接服务器。
DISPLAY 变量无需手动设置,如无特殊需要不须关心。