使用 TigerVNC 远程控制 CentOS 的完整步骤
一 准备与安装
- 确认系统版本:常见为 CentOS 7/8。如无图形界面,先安装 GNOME 桌面(以 root 执行):
- CentOS 7:sudo yum groupinstall “Server with GUI”;sudo systemctl set-default graphical.target;sudo systemctl start graphical.target
- CentOS 8:sudo dnf groupinstall “Server with GUI”
- 安装 TigerVNC 服务器:
- CentOS 7:sudo yum -y install tigervnc-server tigervnc
- CentOS 8:sudo dnf install tigervnc-server
- 建议创建专用系统用户(示例:vncuser)并切换到该用户设置 VNC 密码:
- useradd vncuser;passwd vncuser
- su - vncuser;vncpasswd(密码需 ≥ 6 位;可设置仅查看密码)
二 配置 VNC 服务
- 方式 A(CentOS 7 常用):基于 systemd 模板创建服务单元
- 复制模板:sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
- 编辑 ExecStart,指定用户与分辨率(示例为 vncuser):
- ExecStart=/sbin/runuser -l vncuser -c “/usr/bin/vncserver %i -geometry 1280x1024 -depth 24”
- 重新加载并启动:
- sudo systemctl daemon-reload
- sudo systemctl start vncserver@:1.service
- sudo systemctl enable vncserver@:1.service
- 方式 B(CentOS 8 常用):使用 /etc/tigervnc/vncserver.users 映射用户与显示号
- 配置映射(示例将 :10 映射给用户 haicheng):echo “:10=haicheng” | sudo tee -a /etc/tigervnc/vncserver.users
- 为用户创建 ~/.vnc/config(指定会话与桌面大小,并仅本地回环):
- session=gnome
- geometry=1920x1200
- localhost
- 启动服务(:10 对应端口 5910 = 5900 + 10):
- sudo systemctl enable vncserver@:10 --now
- 桌面会话与 xstartup(如未自动使用 GNOME,可在 ~/.vnc/xstartup 中显式启动)
- 示例(GNOME):
- #!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
- 赋予可执行权限:chmod +x ~/.vnc/xstartup
三 防火墙与端口
- 端口规则:显示号 :N 对应 5900+N(如 :1 → 5901)。开放端口示例:
- firewalld:sudo firewall-cmd --add-port=5901/tcp --permanent;sudo firewall-cmd --reload
- 云主机需同时放行云厂商安全组 TCP 5901
- 安全建议:生产环境优先通过 SSH 隧道转发 VNC(仅开放本地回环),在客户端使用“Via SSH”方式连接,避免明文暴露 5901:
- 服务端启动限制为本地:在 vncserver 参数或 ~/.vnc/config 中加入 localhost
- 客户端:vncviewer -via 用户名@服务器IP localhost:1
四 客户端连接与常用操作
- 连接地址格式:服务器IP:5901(对应 :1)、IP:5910(对应 :10)。可用客户端:TigerVNC Viewer、RealVNC Viewer。
- 常用运维命令(以 :1 为例):
- 查看会话:vncserver -list
- 结束会话:vncserver -kill :1
- 重启服务:systemctl restart vncserver@:1.service
- 多用户扩展:为不同用户分配不同显示号(如 :2、:3…),对应端口 5902、5903…;按需为每个用户重复“设置密码 + 配置服务/映射 + 防火墙放行”。
五 常见问题排查
- 连接被拒绝或无界面:确认服务已启动(systemctl status)、端口已放行(ss -tulpn | grep vnc)、以及客户端地址书写为 IP:590N;若使用云主机,检查安全组。
- 黑屏或仅壁纸:检查 ~/.vnc/xstartup 是否包含正确的桌面会话(如 gnome-session 或 startxfce4),并确认已赋予可执行权限。
- 端口不对或冲突:显示号与端口为 5900+N 关系;如端口被占用,换用 :2/:3 并相应放行 5902/5903。
- 安全性不足:避免直接暴露 5901,建议启用 localhost 限制并通过 SSH 隧道访问。