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)提供绘图的必要服务。画家处理数据并对用户的做出响应,在画布上展示出来。

举个实际的例子:假设此时你正在用一台 Win­dows 主机通过 SSH 连接到另一台 Linux 主机,要在 Linux 上运行 Wire­shark 并把图像显示在 Win­dows 上,那么 X Server 在 Windows 上,X Client 在 Linux 上。

看上去这有点违反直觉。不过只要记住:在哪里看到画面,哪里就有 X Server。

**X11 转发是一个允许运行在远端服务器上的 X11 程序(具有 GUI 的程序)在本地机器上显示图形界面的机制。**远端服务器不需要安装完整的 X11 系统框架,只需要安装个别必须的软件包。

2 安装

2.1 远端服务器

  1. 安装 xorg-xauth 软件包。(xauth,软件包名视发行版而定。)
  2. 修改 /etc/ssh/sshd_config
    X11Forwarding yes
    
    # 以下三项都是默认值
    AllowTcpForwarding yes
    X11UseLocalhost yes
    X11DisplayOffset 10
    
  3. 重启 sshd.service

2.2 本地客户端

2.2.1 类 Unix 系统

  1. 安装 xorg-xauth 软件包。(xauth,软件包名视发行版而定。)
  2. 在使用 ssh 命令连接远端服务器时加上 -X 选项;或者将 ssh config 中的 ForwardX11 设为 yes

2.2.2 Windows

安装 vcxsrv 或者使用集成了 X Server 的终端软件。

3 常见问题

  • 与 DISPLAY 变量相关的问题,如提示 DISPLAY 变量未设置等。

    断开本次 SSH 连接,重新连接服务器。
    DISPLAY 变量无需手动设置,如无特殊需要不须关心。