适用系统:Kylin Advanced Server OS V11
目标桌面环境:UKUI(麒麟默认桌面)
VNC 服务端:TigerVNC 1.13+
解决核心问题:鼠标光标丢失、服务启动失败、桌面无法加载
[root@server01 ~]# cat /etc/os-release
NAME=“Kylin Linux Advanced Server”
VERSION=“V11 (Swan25)”
ID=“kylin”
VERSION_ID=“V11”
PRETTY_NAME=“Kylin Linux Advanced Server V11 (Swan25)”
ANSI_COLOR=“0;31”
[root@server01 ~]# uname -a
Linux server01 6.6.0-32.11.v2505.ky11.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 25 15:07:12 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
操作系统是麒麟 Linux 高级服务器版 V11 (Swan25),内核版本为 6.6.0。
UKUI 是麒麟操作系统默认的桌面环境(由优麒麟团队开发,基于 Qt,轻量且国产化适配好)。这意味着你不需要再安装 GNOME 或 XFCE——我们可以直接使用现有的 UKUI 桌面来配置 VNC!
当然可以!以下是为你量身定制的、完整准确、可直接用于生产环境的 《麒麟高级服务器系统 V11 中安装 VNC 的操作步骤》 文档,已整合你本次成功实践的所有关键细节。
麒麟高级服务器系统 V11 中安装 VNC 的操作步骤
✅ 安全 · 稳定 · 功能完整 · 光标可靠 · 开机自启
适配 UKUI 桌面环境 | 基于 TigerVNC + systemd user service
📌 适用环境
- 操作系统:Kylin Advanced Server OS V11(基于 openEuler / RHEL 生态)
- 桌面环境:UKUI(默认图形界面)
- 目标用户:普通非 root 用户(如 vncuser)
- 网络要求:服务器可访问(防火墙放行 VNC 端口)
🔧 第一步:创建专用 VNC 用户(推荐)
sudo useradd -m -s /bin/bash vncuser
sudo passwd vncuser
创建一个专用用户(例如 vncuser)出于安全考虑,不要用 root 运行 VNC。
作用说明:
- 创建独立用户运行 VNC,避免以 root 身份启动桌面(安全最佳实践)。
- -m 自动创建家目录 /home/vncuser,用于存放 VNC 配置。
- 设置强密码,仅用于系统登录(VNC 认证使用单独密码)。
🔐 第二步:设置 VNC 访问密码
su – vncuser
vncpasswd
输入并确认密码(例如 MyVncPass123)。
作用说明:
- 生成加密密码文件 ~/.vnc/passwd(权限 600)。
- 此密码用于客户端连接时的 VncAuth 认证,与系统登录密码无关。
- 切勿使用 root 运行此命令。
🖥️ 第三步:配置桌面启动脚本(~/.vnc/xstartup)
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/sh
# 设置 UKUI 必需的环境变量
export XDG_RUNTIME_DIR=/tmp/runtime-$USER
export XDG_SESSION_ID=1
export XDG_SESSION_TYPE=x11
export XDG_CURRENT_DESKTOP=UKUI
export GNOME_DESKTOP_SESSION_ID=this-is-deprecated
# 创建 runtime 目录
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR
# 启动 D-Bus 会话(UKUI 依赖)
unset DBUS_SESSION_BUS_ADDRESS
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
eval $(dbus-launch –sh-syntax)
export DBUS_SESSION_BUS_ADDRESS
fi
# === 关键修复:强制设置基础光标,防止鼠标消失 ===
xsetroot -cursor_name left_ptr
# 启动 UKUI 桌面
exec /usr/bin/ukui-session
EOF
添加执行权限
chmod +x ~/.vnc/xstartup
作用详解:
| 环境变量 | UKUI 及其组件(如通知、面板、设置守护进程)依赖 XDG_* 环境变量识别会话类型。若缺失,可能导致部分功能异常或崩溃。 |
| D-Bus 初始化 | UKUI 使用 D-Bus 进行进程间通信。dbus-launch 启动一个私有 D-Bus 会话,确保桌面组件能正常注册和通信。 |
| xsetroot -cursor_name left_ptr | ⭐ 核心修复:在 X server 启动后立即设置一个标准 X 字体光标(箭头)。绕过 UKUI 对 GL/Mesa/主题引擎的依赖,即使 3D 渲染失败(日志中 MESA: ZINK failed),光标依然可见。这是解决“鼠标偶尔消失”问题的核心措施。 |
| exec ukui-session | 替换当前进程启动桌面,以替换方式启动 UKUI 主会话,确保 VNC 进程树正确管理生命周期。 |
💡 注意:不要添加 RenderCursor=false(无效参数,会导致启动失败)。
⚙️ 第四步:配置 VNC 参数(~/.vnc/config)
cat > ~/.vnc/config << 'EOF'
AlwaysShared
NeverShared
AcceptKeyEvents=true
AcceptPointerEvents=true
AcceptSetDesktopSize=true
UseIPv6=no
SecurityTypes=VncAuth
EOF
参数说明:
| AlwaysShared / NeverShared | 控制多客户端连接行为(兼容性保留) |
| AcceptKeyEvents / AcceptPointerEvents | 允许键盘和鼠标输入 |
| AcceptSetDesktopSize | 支持客户端动态调整分辨率 |
| UseIPv6=no | 禁用 IPv6,避免监听异常 |
| SecurityTypes=VncAuth | 仅使用 VNC 密码认证(简单可靠) |
🧩 第五步:安装 TigerVNC 服务端
# 返回 root 或 sudo 用户
exit
# 安装(根据包管理器选择)
sudo dnf install -y tigervnc-server
# 或
sudo yum install -y tigervnc-server
作用说明:
- 安装 tigervnc-server 包,包含 Xvnc 虚拟 X 服务器和 vncserver 启动脚本。
系统将自动提供 /usr/bin/Xvnc 和 /usr/bin/vncserver。 - 麒麟 V11 默认仓库包含该软件包。
🔄 第六步:配置 systemd 用户服务(实现开机自启)
6.1 切换回 vncuser,一定要切换到vncuser用户下操作下面的命令。
su – vncuser
6.2 创建服务单元文件
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/vncserver@.service << 'EOF'
[Unit]
Description=TigerVNC Server for UKUI (Display %i)
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/vncserver :%i -geometry 1920×1080 -depth 24 -localhost no
ExecStop=/usr/bin/vncserver -kill :%i
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
EOF
关键点解析:
- Type=forking:⭐ 必须设置!因为 vncserver 是传统 fork 脚本,若用 simple,systemd 会在父进程退出后立即执行 ExecStop,导致服务被杀。
- -localhost no:显式允许远程连接(覆盖可能的默认限制)。
- %i:实例占位符(如 :1 对应 vncserver@1.service)。
🔌 第七步:启用 linger(使用户服务可在无登录时启动)
# 切换到 root 或 sudo 用户
exit
sudo loginctl enable-linger vncuser
作用说明:
- 默认情况下,systemd 不会为未登录用户启动其 user service。
- linger 允许 vncuser 的服务在系统启动时自动运行,无需用户手动登录。
- ✅ 验证:loginctl show-user vncuser –property=Linger 应输出 Linger=yes。
loginctl show-user vncuser –property=Linger
Linger=yes
▶️ 第八步:启用并启动 VNC 服务
su – vncuser
先确保旧实例已停止(若存在)
vncserver -kill :1
手动启动新实例(分辨率为 1920×1080,色深 24 位)
vncserver :1 -geometry 1920×1080 -depth 24
输出示例(成功):
New 'server01:1 (vncuser)' desktop is server01:1
Creating default config /home/vncuser/.vnc/config
Starting applications specified in /home/vncuser/.vnc/xstartup
Log file is /home/vncuser/.vnc/server01:1.log
作用说明:
:1 表示显示编号,对应 TCP 端口 5900 + 1 = 5901。
-geometry 和 -depth 控制桌面分辨率和颜色质量。
日志文件 ~/.vnc/server01:1.log 可用于排查启动问题。
# 重载配置(若修改过 service 文件)
systemctl –user daemon-reload
# 启用开机自启
systemctl –user enable vncserver@1.service
# 立即启动服务
systemctl –user start vncserver@1.service
验证服务状态:
systemctl –user status vncserver@1.service
# 应显示 "active (running)"
ss -tuln | grep 5901
# 应显示 LISTEN 状态
🔥 第九步:配置防火墙(如启用)
# 放行 VNC 端口(:1 → 5901)
sudo firewall-cmd –permanent –add-port=5901/tcp
sudo firewall-cmd –reload
若使用 iptables 或未启用防火墙,可跳过。
🧪 第十步:重启测试(终极验证)
sudo reboot
重启后,直接使用 VNC 客户端连接:
客户端连接建议
推荐客户端:TigerVNC Viewer(Windows / Linux)
连接地址:10.176.27.1:5901 或 10.176.27.1::1
认证方式:输入步骤二设置的 VNC 密码
光标问题应急:按 F8 → “Refresh screen” 可强制刷新画面(包括光标)
✅ 应能成功进入完整的 UKUI 桌面,且鼠标光标始终可见!
🛠️ 日常管理命令(以 vncuser 身份)
| 查看状态 | systemctl –user status vncserver@1.service |
| 重启服务 | systemctl –user restart vncserver@1.service |
| 查看日志 | journalctl –user -u vncserver@1.service -f |
| 停止服务 | systemctl –user stop vncserver@1.service |
💡 若日志提示权限不足,可加入 adm 组:
sudo usermod -aG adm vncuser(需重新登录生效)
✅ 总结
通过以上步骤,你已构建一个:
- 安全:普通用户运行,独立 VNC 密码认证
- 稳定:systemd 管理,崩溃自动重启
- 功能完整:UKUI 全组件加载(面板、通知、蓝牙、电源等)
- 光标可靠:xsetroot 修复鼠标消失问题
- 开机自启:linger + systemd user service 实现无人值守启动
的 企业级 VNC 远程桌面解决方案,完美适配 麒麟高级服务器操作系统 V11。
📝 文档生成时间:2026年2月1日
🏁 适用版本:Kylin Advanced Server OS V11 + TigerVNC 1.13+ + UKUI 3.x
网硕互联帮助中心






评论前必须登录!
注册