暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Every Day of a DBA,第126期:CentOS Stream 10 Wayland/X11 图形显示与远程连接

原创 ByteHouse 2026-04-02
94

CentOS Stream 10 Wayland/X11 图形显示与远程连接

摘要

本文围绕 Linux 图形显示核心技术(X11、Wayland)、显示服务器(Xorg)展开,重点说明红帽 RHEL 10 及 CentOS Stream 10 移除 X.org 显示服务器、默认启用 Wayland 协议的核心变化;对比 Wayland 与 Xorg 在 VNC 支持上的差异,详解 xhost 命令的用法,同时覆盖 Xming 工具、X11 Forwarding 远程图形启动、Xshell X11 转发配置,以及 CentOS Stream 10 Wayland 会话的远程桌面连接方案,形成完整的技术实操体系。

核心术语说明

  • X11:即 X Window System 第 11 版本,Linux 早期主流图形显示协议,采用客户端-服务器(C/S)架构,是传统图形界面的基础。

  • Wayland:新一代图形显示协议,旨在替代 X11,架构更简洁,适配现代硬件,具备更高的性能和安全性。

  • X Server / Xorg:Xorg 是 X11 协议的主流实现,作为 X Server 负责处理底层硬件(显卡、显示器、输入设备)交互,接收客户端(图形应用)请求并完成画面绘制。

  • 桌面环境:基于图形显示协议(X11/Wayland)构建的用户交互界面,如 GNOME、KDE,依赖显示服务器运行。

  • 显示服务器:负责管理硬件显示资源、处理图形渲染和输入设备交互的核心组件,Xorg(对应 X11)、GNOME 显示服务器(对应 Wayland)均属于此类。

1. Wayland 与 X11:Linux 图形显示技术的演变

1.1. 引言

图形显示技术是 Linux 操作系统用户体验的核心,X11 作为 Linux 图形显示的基石,主导行业数十年,承载了绝大多数图形应用的运行。随着硬件技术(高分辨率显示器、触摸屏、GPU)的迭代和用户对性能、安全性的更高需求,Wayland 逐步崛起,成为新一代 Linux 图形显示的主流选择,二者的迭代演变,是 Linux 图形技术适配时代需求的必然结果。

1.2. X11:图形显示的元老

(一)历史背景

X11 诞生于 20 世纪 80 年代,由麻省理工学院(MIT)主导开发,其核心设计理念是“网络透明、设备无关”——即图形应用(客户端)与图形显示(服务器)可分离,可跨网络实现远程图形显示,这在当时是极具前瞻性的设计,为分布式计算和远程办公奠定了基础。

(二)架构特点

1. 客户端-服务器架构

X11 采用经典的客户端-服务器(C/S)模型,核心分为两大组件:

  • X Server:负责与底层硬件交互,管理显卡、显示器、键盘、鼠标等输入输出设备,接收客户端的图形渲染请求,完成屏幕画面绘制,并将输入设备的操作(如鼠标点击、键盘输入)传递给客户端。

  • 客户端:即运行在系统中的图形应用程序(如文本编辑器、浏览器、设计软件),负责处理应用逻辑,向 X Server 发送图形渲染、窗口控制等请求,接收 X Server 传递的输入操作并响应。

这种架构的核心优势的是“网络透明”——客户端可运行在远程服务器上,X Server 可运行在本地终端,二者通过网络通信,实现“远程运行应用、本地显示图形”的效果,极大提升了资源共享和分布式办公的灵活性。

2. 可扩展性强

X11 拥有完善的扩展机制,支持通过各类扩展插件实现功能升级,例如 3D 图形渲染、多显示器管理、触摸操作适配等。丰富的扩展能力,使得 X11 能够适应不同的硬件环境和应用场景,长期支撑 Linux 图形生态的发展。

(三)应用与影响

1. 广泛应用

长期以来,几乎所有主流 Linux 发行版(如 CentOS、Ubuntu、Fedora)都默认采用 X11 作为图形显示协议,基于 X11 开发了 GNOME 2、KDE 3、Xfce 等经典桌面环境,为用户提供了美观、易用的图形操作界面,成为 Linux 桌面普及的核心支撑。

2. 对开源社区的贡献

X11 采用开源协议,允许开发者自由研究、修改、分发其源代码,极大推动了开源图形软件的发展。基于 X11 协议,开发者们开发了大量图形工具、应用程序和桌面环境,逐步完善了 Linux 图形生态,为后续图形技术的迭代奠定了坚实基础。

1.3. Wayland:新时代的挑战者

(一)诞生背景

随着硬件技术的飞速发展,高分辨率显示器、触摸屏、高性能 GPU 逐渐普及,X11 的固有缺陷逐渐暴露:架构复杂、中间环节过多,导致图形渲染延迟高、资源占用大,难以适配高帧率、高分辨率的显示需求;同时,X11 的安全机制不完善,存在隐私泄露、恶意攻击的风险,无法满足现代应用对安全性的要求。

为解决这些痛点,Wayland 项目于 2008 年启动,由 Red Hat 等企业主导开发,旨在打造一款更简洁、高效、安全的图形显示协议,适配现代硬件和应用需求,逐步替代 X11 成为 Linux 图形显示的主流。

(二)架构创新

1. 简化架构,降低延迟

Wayland 摒弃了 X11 复杂的客户端-服务器架构,采用“显示服务器-客户端”直接通信的模式:显示服务器(如 GNOME 显示服务器)直接与硬件(GPU、显示器、输入设备)交互,客户端应用程序通过 Wayland 协议直接与显示服务器通信,无需中间转发环节。

这种简化的架构,减少了图形渲染的中间开销,降低了显示延迟,提升了系统整体性能,尤其在高分辨率、高帧率的场景(如 4K 显示、3D 游戏、视频编辑)中,优势更为明显。

2. 更好的硬件适配

Wayland 深度适配现代 GPU 功能,可直接与 GPU 驱动程序交互,实现高效的硬件加速图形渲染;同时,对高分辨率显示器、触摸屏、触控板等新设备的支持更完善,能够提供更流畅的操作体验和更精准的输入响应,解决了 X11 在新硬件上的适配难题。

(三)发展现状

1. 逐渐普及,成为主流

目前,越来越多的 Linux 发行版开始默认采用 Wayland 作为图形显示协议,例如 Red Hat RHEL 10、CentOS Stream 10、Ubuntu 22.04 及以上版本、Fedora 34 及以上版本;GNOME 3.38 及以上版本、KDE Plasma 5.24 及以上版本等主流桌面环境,也已默认适配 Wayland,Wayland 在 Linux 图形显示领域的影响力持续扩大。

2. 应用生态不断完善

虽然 Wayland 的应用生态仍在发展中,但目前绝大多数主流图形应用(如 Firefox、Chrome、LibreOffice、GIMP)已完成 Wayland 适配;同时,开源社区持续推进老应用的适配工作,逐步解决 Wayland 兼容性问题,进一步推动 Wayland 的普及。

1.4. X11 与 Wayland 的对比

(一)性能对比

1. X11 的性能局限

X11 架构复杂,客户端与 X Server 之间的通信需经过多个中间环节,在处理高分辨率显示、复杂图形渲染(如 3D 游戏、高清视频)时,容易出现 CPU、GPU 占用率过高的问题,导致画面卡顿、响应延迟,无法满足现代应用的性能需求。

2. Wayland 的性能优势

Wayland 简化了通信架构,客户端与显示服务器直接交互,减少了中间开销;同时,深度适配现代 GPU 硬件加速,能够高效利用 GPU 资源,在相同硬件条件下,图形渲染更流畅、响应速度更快,尤其适合高分辨率、图形密集型应用场景。

(二)安全性对比

1. X11 的安全隐患

X11 的客户端-服务器架构存在明显安全漏洞:客户端可向 X Server 发送任意请求,恶意客户端可能利用这一漏洞,窃取用户输入信息(如密码、键盘输入)、篡改显示内容,或发起拒绝服务攻击,存在严重的隐私和安全风险。

2. Wayland 的安全改进

Wayland 在设计之初就重点考虑安全性,采用严格的权限管理机制:客户端只能访问显示服务器允许的资源,无法直接获取其他客户端的信息或篡改显示内容;同时,Wayland 对输入设备的访问进行严格控制,有效防范恶意攻击,保护用户隐私和系统安全。

(三)兼容性对比

1. X11 的广泛兼容

X11 拥有数十年的发展历史,形成了庞大的应用生态,几乎所有 Linux 图形应用都支持 X11 协议,即使是一些老旧应用,也能在 X11 环境下正常运行。这种广泛的兼容性,使得 X11 在很长一段时间内无法被替代。

2. Wayland 的兼容性挑战

由于 Wayland 采用全新的协议架构,部分基于 X11 协议开发的老旧应用无法直接在 Wayland 环境下运行。不过,Wayland 提供了 Xwayland 兼容层,可模拟 X11 环境,让大多数老旧应用能够正常运行;同时,随着应用适配工作的推进,Wayland 的兼容性问题正在逐步解决。

1.5. 未来展望

(一)Wayland 的发展趋势

  1. 进一步优化和普及:Wayland 将持续优化性能和兼容性,充分利用新的硬件特性(如更强大的 GPU、新型显示技术),为用户提供更出色的图形显示体验;预计未来几年,绝大多数 Linux 发行版将默认采用 Wayland,使其成为 Linux 图形显示的绝对主流。

  2. 应用生态持续完善:软件开发者将进一步加大 Wayland 适配力度,更多老旧应用将完成适配,同时基于 Wayland 协议开发的新应用将不断涌现,逐步完善 Wayland 应用生态,巩固其主流地位。

(二)X11 的角色转变

由于 X11 拥有庞大的应用基础,短期内不会完全消失。在一些对兼容性要求极高的场景(如运行老旧 Linux 应用、特定工业软件),X11 仍将发挥作用;但随着 Wayland 的普及,X11 的使用范围将逐渐缩小,从主流图形显示技术逐步转变为备用方案,仅在特殊场景下使用。

2. env查看DISPLAY环境变量

DISPLAY是Linux图形显示体系的核心环境变量,专门用于指定图形应用程序的输出目标(X Server地址、显示编号、屏幕编号),无论是本地运行GUI程序,还是X11 Forwarding远程图形转发、xhost权限配置,都依赖该变量识别显示目标。env命令可快速查看当前会话的DISPLAY变量值,判断图形会话状态、排查图形程序无法启动的核心问题。

直接执行以下命令,即可筛选出当前会话中DISPLAY环境变量的取值,无需遍历全部环境变量,精准高效:

# 筛选查看DISPLAY环境变量(推荐,结果简洁) env | grep DISPLAY # 或直接打印变量值(更快捷) echo $DISPLAY # 执行env直接查看全部环境变量,手动查找DISPLAY行 env

2.1. DISPLAY变量格式与含义

标准格式为:主机名:显示编号.屏幕编号,日常使用中屏幕编号常省略,CentOS Stream 10 本地与远程场景常见格式如下:

  • :0:最常见本地值,代表本机第一个X Server/显示设备,默认屏幕0,本地X11会话、Xwayland兼容层最常用;
  • :10.0:X11 Forwarding远程转发默认值,SSH转发会自动分配从10开始的显示编号,避免占用本地显示;
  • localhost:0:明确绑定本地回环地址的X Server,安全性更高,远程转发加密会话常用;
  • 空值/无输出:当前会话为纯命令行终端,未启动图形会话,或未配置图形显示环境,无法直接运行GUI程序。

3. xhost 命令

xhost 命令用于管理 X Server 的访问权限,控制哪些主机或用户可以访问当前系统上的 X Server,进而实现图形界面的远程或本地跨用户访问。默认情况下,远程访问会被禁用(避免安全风险),仅在需要远程运行 GUI 应用、本地跨用户(如 root 运行桌面 GUI)时,需通过 xhost 配置访问权限。

核心场景:当桌面用户以 root 身份运行 GUI 应用时,需授予 root 访问当前用户 X Server 的权限,否则应用无法正常显示图形界面。

常用 xhost 命令及说明(以当前登录用户为 LocalUser 为例):

命令 功能说明
xhost +si:localuser:some_user 授予 some_user(指定用户)访问当前登录用户(LocalUser)X Server 的权限。
xhost -si:localuser:some_user 撤消 some_user 访问当前用户 X Server 的权限。
xhost +local 仅允许本地网络(本机及局域网内设备)访问 X Server。
xhost -local 禁止本地网络访问 X Server。
xhost + 禁用所有访问控制,允许所有主机/用户访问(警告:存在严重安全风险,不建议生产环境使用)。
xhost - 恢复默认访问控制,禁用无限制访问。

常用示例:以当前普通用户登录,授予 root 访问 X Server 的权限(单用户环境常用),执行命令:xhost +si:localuser:root

4. Xming for Windows

4.1. 概述

Xming 是一款针对 Windows 系统开发的免费开源 X11 服务器软件,其中版本 6.9.0.31 因稳定性高、兼容性好,成为最广受欢迎的经典版本。对于需要在 Windows 环境下访问、运行 Linux 或其他 Unix 系统图形界面应用程序的用户来说,Xming 是不可或缺的跨平台图形交互桥梁。

核心原理:运行在远程 Linux/Unix 服务器上的图形应用程序(X Client),通过 SSH 协议将图形渲染数据发送给运行在本地 Windows 电脑上的 Xming 服务器(X Server),由 Xming 服务器负责将图形界面显示在本地 Windows 屏幕上——从图形显示逻辑来看,Xming 扮演的是“X Server”的角色,负责接收客户端请求并完成画面绘制。

http://sourceforge.net/projects/xming
http://en.wikipedia.org/wiki/Xming
http://www.straightrunning.com/XmingNotes

4.2. 核心特点

  • 轻量级高效:Xming 设计精简,安装包体积小,占用 Windows 系统资源少,启动速度快,不会影响本地系统的正常运行。

  • 兼容性广泛:支持从 Windows XP 到 Windows 11 及以上的所有主流 Windows 操作系统版本,同时兼容各类 Linux/Unix 系统的 X11 客户端应用,适配多种应用场景。

  • 无缝集成 SSH:能够与 PuTTY、SecureCRT、Xshell 等主流 SSH 客户端完美结合,无需复杂配置,即可通过 SSH 隧道实现安全的图形数据传输,简化远程图形操作流程。

  • 安全可靠:结合 SSH 协议进行数据传输,所有图形数据和操作指令均经过加密处理,有效防止数据被窃听、篡改,保障远程会话的安全性。

  • 易用性强:安装过程简单,图形化设置界面直观,即使是新手用户,也能快速完成安装和配置,快速上手使用。

4.3. 安装

img

img

img

img

5. X11 Forwarding

大多数 Linux 服务器出于性能和效率考虑,通常不安装完整的图形桌面环境,但部分应用程序(如 Firefox、图形化配置工具)需要依赖图形界面才能启动。此时,无需在服务器上安装桌面环境,通过 X11 Forwarding(X11 转发)功能,即可在本地 Windows 或 Linux 终端上显示远程服务器的 GUI 应用,实现“远程运行、本地显示”。

5.1. X11 Forwarding 核心机制

X Server 与 X Client 既可以运行在同一台主机上(如 Linux 桌面版,X Server 与桌面环境、图形应用运行在本地),也可以运行在不同主机上,通过网络通信实现图形显示——这就是 X11 Forwarding 的核心基础。

由于 X 协议本身不加密,直接通过网络传输数据存在安全风险,因此 X11 Forwarding 通常结合 SSH 协议使用:将 X Server 与 X Client 之间的未加密 TCP/IP 连接,转发到二者之间建立的 SSH 加密连接中,既实现了远程图形显示,又保障了数据传输的安全性。

核心逻辑:在本地主机(Windows/Linux)运行 X Server(如 Windows 上的 Xming、Linux 桌面自带的 X Server),远程 CentOS 服务器作为 X Client,将图形渲染请求通过 SSH 隧道发送给本地 X Server,由本地 X Server 完成画面绘制,最终在本地屏幕上显示远程应用的图形界面。

注:X11 中的“X”指 X 协议,“11”指该协议的第 11 个版本,是目前应用最广泛的版本。

5.2. 利用 X11 Forwarding 远程启动 CentOS 服务器 GUI 程序

本操作适用于 CentOS 7/8/Stream 9 等版本,无需在服务器上安装完整桌面环境,仅需配置 X11 转发相关依赖和服务即可。

步骤 1:安装 X11 转发所需依赖

X11 Forwarding 依赖 xauth 工具(用于 X11 会话身份验证)和 X11 字体(避免图形界面乱码),需在远程 CentOS 服务器上安装对应软件包,执行以下命令:

yum install xorg-x11-xauth xorg-x11-fonts-* -y

(CentOS Stream 10 可使用 dnf 命令替代 yum,命令不变)

步骤 2:配置 SSH 服务器的 X11 转发功能

X11 Forwarding 功能通过 SSH 服务实现,需修改 SSH 配置文件 /etc/ssh/sshd_config,确保以下参数配置正确:

# 编辑 SSH 配置文件 vim /etc/ssh/sshd_config

找到并修改以下 3 个参数(确保值与下方一致,若参数被注释,需取消注释):

  • X11Forwarding yes:允许开启 X11 转发功能(默认值为 no,需改为 yes)。

  • X11DisplayOffset 10:指定 X11 转发的第一个可用显示区(display)编号,默认值为 10,用于避免 SSH 占用本地 X Server 的显示区,防止混淆。

  • X11UseLocalhost yes:将 X11 转发服务器绑定到本地回环地址(localhost),提高安全性,默认值为 yes,无需修改。

配置完成后,重启 SSH 服务使配置生效:

systemctl restart sshd

步骤 3:本地客户端配置(Windows 系统,以 SecureCRT 和 PuTTY 为例)

Windows 系统本身不自带 X Server,需先安装 Xming 软件(参考本文第 4 部分),启动 Xming 后,再配置 SSH 客户端的 X11 转发功能。

场景 1:使用 SecureCRT 配置 X11 转发
  1. 启动 Xming 服务器(双击桌面快捷方式,默认配置即可,启动后在系统托盘显示图标)。

  2. 打开 SecureCRT,点击【文件】→【打开】,选择需要连接的 CentOS 服务器会话。

  3. 点击工具栏【属性】按钮,在弹出的对话框中,选择【Port Forwarding】→【Remote/X11】。

  4. 勾选【X11 forwarding】(启用 X11 转发),保存配置并重启 SecureCRT。

  5. 连接远程 CentOS 服务器,即可通过 X11 转发运行 GUI 应用。

场景 2:使用 PuTTY 配置 X11 转发
  1. 启动 Xming 服务器,保持后台运行。

  2. 打开 PuTTY,在【Session】选项卡中,输入 CentOS 服务器的 IP 地址,SSH 端口默认 22(无需修改)。

    img

  3. 切换到【Connection】→【Data】选项卡,输入远程服务器的用户名(用于自动登录,可选)。

    img

  4. 切换到【Connection】→【SSH】→【X11】选项卡,勾选【Enable X11 forwarding】,在【X display location】中输入 localhost:0(:0 表示本地第 0 个显示设备,与 Xming 默认配置一致)。

img

  1. 返回【Session】选项卡,保存会话配置,点击【Open】连接远程服务器。

FQ 乱码问题:

putty配置:windows—apperance—font—Fixedsys

windows—translation—remote character set—UTF8

步骤 4:验证 X11 转发功能

连接远程 CentOS 服务器后,执行一个简单的 GUI 应用(如 gedit 文本编辑器),验证图形界面是否能在本地显示:

gedit

(& 表示后台运行,避免占用终端)

若配置正确,本地 Windows 屏幕会弹出 gedit 文本编辑器窗口,说明 X11 转发功能正常。

img

img

常见问题:图形界面乱码

若启动 GUI 应用后出现乱码,需配置 PuTTY 的字符编码,步骤如下:

  1. 打开 PuTTY,进入【Window】→【Appearance】,设置字体为 Fixedsys(或其他支持中文的字体)。

  2. 进入【Window】→【Translation】,在【Remote character set】中选择【UTF-8】,保存配置并重新连接服务器,乱码问题即可解决。

5.3. 如何在 Xshell 中激活 X11 转发功能

X11 转发是端口转发的一种特殊形式,专门用于实现远程 X11 应用的本地显示。与其他 SSH 客户端类似,Xshell 通过配置隧道功能,可快速激活 X11 转发,跳过复杂的端口转发规则,实现安全、便捷的远程图形应用访问。

核心逻辑:Xshell 作为 SSH 客户端,将远程 CentOS 服务器(X Client)的图形渲染请求,通过 SSH 隧道转发到本地 X Server(如 Xming、Xmanager),由本地 X Server 完成画面绘制。

步骤 1:在 Xshell 中配置 X11 转发

  1. 打开 Xshell,点击【文件】→【打开】,弹出【会话】对话框,选择需要配置 X11 转发的远程服务器会话。

  2. 点击工具栏中的【属性】按钮,打开会话属性对话框,选择左侧【隧道】分类菜单。

  3. 在【X11 转移】(部分版本为【X11 转发】)区域,勾选【转发 X11 连接到】。

连接X11

  1. 若本地安装了 Xmanager(一款 Windows 平台的 X Server 软件),直接选择【Xmanager】;若使用 Xming 等其他 X Server,选择【X DISPLAY】,并输入正确的显示名称(默认输入 localhost:0,与 Xming 默认配置一致)。

  2. 点击【确定】保存配置,关闭属性对话框。

步骤 2:在远程 SSH 服务器(CentOS)中配置 X11 转发服务

与本文第 3 部分步骤 2 一致,需确保远程 CentOS 服务器的 SSH 配置文件(/etc/ssh/sshd_config)中,以下两个参数配置正确:

X11Forwarding yes X11UseLocalhost yes

配置完成后,重启 SSH 服务:systemctl restart sshd

步骤 3:在 Xshell 终端运行 X11 应用程序

  1. 若本地安装了 Xmanager,直接进入下一步;若使用 Xming,需先启动 Xming 服务器(后台运行即可)。

  2. 在 Xshell 中,使用配置好的会话,建立与远程 CentOS 服务器的 SSH 连接。

  3. 在 Xshell 终端提示符下,执行任意 X11 应用程序(如 xterm 终端、gedit 文本编辑器),验证转发功能:

[root@centos ~]# xterm

若配置正确,本地 Windows 屏幕会弹出 xterm 终端窗口,说明 X11 转发功能已成功激活。

疑难解答

问题 1:Xshell 提示“Failed to execute Xmanager: Make sure that XManager is currently installed in this system.”

原因:会话配置中选择了“转发 X11 连接到 Xmanager”,但本地系统未安装 Xmanager。

解决方法:① 下载并安装 Xmanager,重启 Xshell 后重新运行应用;② 若使用 Xming,打开会话属性,在【X11 转移】中选择【X DISPLAY】,输入 localhost:0,保存后重新连接。

问题 2:Xshell 提示“The remote SSH server rejected an X11 forwarding request.”

原因:远程 SSH 服务器未开启 X11 转发功能,或配置错误。

解决方法:

  • 对于 OpenSSH 服务器(CentOS 默认):检查 /etc/ssh/sshd_config 文件,确保 X11Forwarding yes,重启 sshd 服务。

  • 对于 SSH.COM 服务器:检查 /etc/ssh2/sshd2_config 文件,设置 AllowX11Forwarding yes,重启 sshd 服务。

  • 其他 SSH 服务器:参考对应软件的官方手册,开启 X11 转发功能。

6. 如何使用 Wayland?

在服务器无物理显示器的场景下(如云端服务器、无头服务器),系统无法检测到有效显示输出,会导致 Wayland 合成器无法正常启动——Wayland 依赖显示输出设备(物理或虚拟)才能运行。此时,需通过模拟虚拟显示器的方式,让 Wayland 正常启动,再结合远程桌面工具实现连接。

6.1. 虚拟显示器模拟方案

针对 Wayland 无物理显示器的问题,主要有以下两种解决方案,核心是模拟虚拟显示输出:

  1. 使用 Wayland 虚拟显示工具:如 weston(Wayland 参考合成器),通过 --use-pixman 选项启用软件渲染,模拟虚拟显示器,无需依赖物理硬件;也可使用 wayvnc(Wayland 专用 VNC 服务器),自带虚拟显示支持。

  2. 使用硬件模拟工具:如 dummy 显示器驱动(虚拟显卡驱动),通过加载 dummy 驱动,让系统识别出虚拟显示器,从而启动 Wayland 合成器;Xvfb(X 虚拟帧缓冲)可用于模拟 X11 环境,但 Wayland 更推荐使用原生虚拟显示工具。

Wayland 提供了 Xwayland 兼容层,用于运行基于 X11 协议的老旧应用——Xwayland 本质上是一个运行在 Wayland 之上的 X Server,能够接收 X11 客户端的请求,转换为 Wayland 协议发送给 Wayland 显示服务器,实现 X11 应用在 Wayland 环境下的正常运行。

注意:Xwayland 仅用于兼容 X11 应用,无法替代 Wayland 本身,远程连接 Wayland 会话仍需采用 Wayland 原生方案(如 gnome-remote-desktop + RDP)。

6.2. 使用远程桌面工具连接 CentOS Stream 10 的 Wayland 会话

CentOS Stream 10 已默认移除 Xorg 显示服务器,仅保留 Xwayland 兼容层,系统默认运行 Wayland 会话。传统 VNC 服务器(如 TigerVNC、x11vnc)仅支持 Xorg 协议,无法直接接管 Wayland 会话;目前,唯一原生支持 Wayland 会话的远程桌面方案是 gnome-remote-desktop(GRD)+ RDP 协议,该方案支持两种核心场景:已登录 Wayland 会话的屏幕共享、无物理显示器的无头远程登录(远程启动新 Wayland 会话)。

核心前提

  1. 服务器已安装 GNOME 桌面环境(通过 sudo dnf groupinstall "Server with GUI" -y 安装),GDM(GNOME 显示管理器)已启用,系统默认运行 graphical.target(图形目标)。

  2. 已登录到 GNOME Wayland 会话(本地物理登录,或通过无头方案远程启动会话)。

  3. 防火墙已放行 RDP 协议默认端口(3389/tcp),SELinux 保持默认状态(GRD 已适配默认 SELinux 策略,无需关闭)。

已登录 Wayland 会话(屏幕共享,最常用)

适合场景:服务器本地已登录 GNOME Wayland 会话,需要远程控制当前活跃的桌面(单用户、实时共享,如远程协助、本地桌面延伸)。

步骤 1:安装 gnome-remote-desktop(GRD)

GRD 是 GNOME 官方开发的远程桌面服务,原生支持 Wayland 会话,同时支持 RDP 和 VNC 双协议,执行以下命令安装:

sudo dnf install -y gnome-remote-desktop
步骤 2:图形界面开启(推荐,适合有本地桌面的场景)
  1. 在 CentOS Stream 10 本地桌面,打开【设置】(Settings)→【系统】(System)→【远程桌面】(Remote Desktop)。

  2. 开启【远程桌面】(Remote Desktop)总开关,确保功能激活。

  3. 开启【远程控制】(Remote Control)开关,允许远程用户通过鼠标、键盘控制本地桌面(若仅需查看,可关闭此开关)。

  4. 设置【访问密码】(Access Password),用于 VNC 协议连接(RDP 协议使用系统用户名密码登录,无需额外设置)。

  5. 记录连接地址:RDP 地址为 rdp://服务器IP,VNC 地址为 vnc://服务器IP:5900(VNC 默认端口 5900)。

步骤 3:命令行配置(无本地桌面,适合服务器端操作)

若服务器无本地桌面,可通过命令行配置 GRD,需切换到已登录的普通用户(Wayland 禁止 root 启动会话,无法用 root 配置),执行以下命令:

# 切换到已登录的普通用户(替换为你的用户名,如 user1) su - your_username # 启用 RDP 和 VNC 后端(RDP 用于 Wayland 原生连接,VNC 用于兼容) grdctl rdp enable grdctl vnc enable # 设置 VNC 访问密码(要求 8 位及以上,替换为你的密码) grdctl vnc set-password "YourVncPass123" # 允许远程控制(禁用“仅查看”模式,若需仅查看,替换为 enable-view-only) grdctl rdp disable-view-only grdctl vnc disable-view-only # 启动 GRD 服务,并设置用户级开机自启(随当前用户登录自动运行) systemctl --user enable --now gnome-remote-desktop.service # 查看服务状态,确认启动成功 systemctl --user status gnome-remote-desktop.service

若服务启动失败,可通过 journalctl --user -u gnome-remote-desktop -f 查看错误日志,排查问题。

步骤 4:防火墙放行端口

放行 RDP(3389/tcp)和 VNC(5900/tcp)端口,执行以下命令:

sudo firewall-cmd --permanent --add-port=3389/tcp # 放行 RDP 端口 sudo firewall-cmd --permanent --add-port=5900/tcp # 放行 VNC 端口 sudo firewall-cmd --reload # 重载防火墙,使配置生效
步骤 5:客户端连接(推荐 RDP 协议,适配 Wayland)
  • Windows 客户端:打开系统自带的【远程桌面连接】(快捷键 Win+R,输入 mstsc),在“计算机”栏输入 CentOS Stream 10 服务器 IP,点击“连接”;输入服务器普通用户的用户名和密码,即可进入 Wayland 桌面,操作流畅无卡顿(原生支持 Wayland)。

  • Linux 客户端:使用 Remmina、GNOME Connections 等远程桌面工具,选择 RDP 协议,输入服务器 IP、用户名和密码,即可连接。

  • VNC 客户端:若需使用 VNC 连接(不推荐,兼容性不如 RDP),可使用 TigerVNC Viewer 等工具,输入 服务器IP:5900,输入设置的 VNC 密码,即可连接(仅支持已登录会话共享)。

无显示器远程登录

适合场景:服务器无物理显示器(如云端服务器、无头服务器),需要远程登录并启动独立的 Wayland 会话,无需本地物理登录(核心:通过 GRD 对接 GDM,远程启动会话)。

步骤 1:安装依赖并生成 TLS 证书(RDP 协议强制要求)

RDP 协议需要 TLS 证书进行加密通信,需安装 openssl 工具并生成自签名 TLS 证书,执行以下命令:

# 安装依赖(gnome-remote-desktop 已安装可跳过) sudo dnf install -y gnome-remote-desktop openssl # 生成自签名 TLS 证书(有效期 10 年,自动适配服务器主机名) sudo openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 \ -keyout /etc/pki/tls/private/gnome-rdp.key \ -out /etc/pki/tls/certs/gnome-rdp.crt \ -subj "/CN=$(hostname)" # 授权证书和密钥给 GRD 专用用户(gnome-remote-desktop),设置严格权限(避免泄露) sudo chown gnome-remote-desktop:gnome-remote-desktop \ /etc/pki/tls/certs/gnome-rdp.crt \ /etc/pki/tls/private/gnome-rdp.key # 设置权限为 600(仅所有者可读写,其他用户无权限) sudo chmod 600 /etc/pki/tls/certs/gnome-rdp.crt sudo chmod 600 /etc/pki/tls/private/gnome-rdp.key
步骤 2:配置系统级 GRD(无头登录)

系统级 GRD 对接 GDM,可远程启动新的 Wayland 会话,执行以下命令(替换 your_username 为你的服务器普通用户名):

# 系统级启用 RDP 协议,绑定生成的 TLS 证书和密钥 sudo grdctl --system rdp enable sudo grdctl --system rdp set-tls-cert /etc/pki/tls/certs/gnome-rdp.crt sudo grdctl --system rdp set-tls-key /etc/pki/tls/private/gnome-rdp.key # 设置 RDP 登录凭证(服务器普通用户的用户名和密码,用于 GDM 远程登录) sudo grdctl --system rdp set-credentials your_username "YourSystemPass" # 启用无头会话服务(为指定用户创建独立虚拟显示器,替换 your_username) sudo systemctl enable --now gnome-headless-session@your_username.service # 启用并重启 GRD 系统服务,使配置生效 sudo systemctl enable --now gnome-remote-desktop.service sudo systemctl restart gnome-remote-desktop.service
步骤 3:验证与连接

首先验证 3389 端口是否正常监听(RDP 协议端口),执行以下命令:

ss -tulnp | grep 33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论