前提
vnc远程用户 不能在同时本地图形界面登录终端。
如果 vnc远程用户 已登录本地 GNOME 桌面,会占用 X11 显示资源(/tmp/.X11-unix/X1 socket),导致 VNC 服务启动失败(vncserver exited with status=29)。
如果用户桌面正在终端运行,vnc远程桌面之前需要先注销在终端的登录
1. 前置配置
1.1 关闭防火墙
bash
# 临时关闭
sudo systemctl stop firewalld
# 永久关闭
sudo systemctl disable --now firewalld
1.2 关闭 SELinux
bash
# 临时关闭(立即生效,重启后恢复)
sudo setenforce 0
# 永久关闭(重启后生效)
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2. 软件安装
bash
sudo dnf install -y tigervnc-server
sudo dnf groupinstall -y "Server with GUI"
3. 关闭 Wayland
bash
sudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/' /etc/gdm/custom.conf
sudo systemctl restart gdm
# 或 reboot
如需验证已切换为 X11(图形化界面运行):
bash
echo $XDG_SESSION_TYPE
# 输出: x11
4. 配置 VNC 用户映射
bash
sudo tee /etc/tigervnc/vncserver.users << 'EOF'
:2=useradmin
EOF
关键:使用
:2(5902 端口) ,避开:1,防止与本地登录的图形桌面会话冲突。
5. 设置 VNC 密码
bash
su - useradmin
# 创建新配置目录(vncpasswd 不会自动创建)
mkdir -p ~/.config/tigervnc
# 设置密码(保存到 ~/.config/tigervnc/passwd)
vncpasswd
# 输入密码两次
# view-only password 选 n
exit
6. 配置 VNC 会话参数
bash
sudo tee /etc/tigervnc/vncserver-config-defaults << 'EOF'
session=gnome
geometry=1920x1080
EOF
7. 复制并启用 systemd 服务
bash
sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@:2
8. 验证服务状态
bash
sudo systemctl status vncserver@:2
# Active: active (running)
ss -ntlp | grep 5902
# LISTEN 0 5 0.0.0.0:5902 users:(("Xvnc",...))
JumpServer 连接配置
| 配置项 | 值 |
|---|---|
| 协议 | VNC |
| 地址 | 服务器IP:5902 |
| 密码 | useradmin 设置的 VNC 密码 |
核心要点总结
| 要点 | 说明 |
|---|---|
显示号选择 :2 |
避免与本地 GNOME 桌面 :1 冲突 |
| 密码路径 | ~/.config/tigervnc/passwd(Rocky 8 新路径) |
| 全局配置 | /etc/tigervnc/vncserver-config-defaults |
| Wayland | 必须关闭,TigerVNC 仅支持 X11 |
| 密码目录 | 需手动 mkdir -p ~/.config/tigervnc,vncpasswd 不会自动创建 |
连接测试
