TigerVNC 在 Linux 上的远程桌面配置指南
一 环境准备与安装
- 准备桌面环境:VNC 需要一个图形会话。无图形时先安装,例如在 CentOS 7 上执行:
- yum groupinstall “X Window System” -y
- yum groupinstall “GNOME Desktop” “Graphical Administration Tools” -y
- systemctl set-default graphical.target && reboot
- 安装 TigerVNC 服务器:
- RHEL/CentOS:sudo yum install -y tigervnc-server
- Debian/Ubuntu:sudo apt-get install -y tigervnc-standalone-server tigervnc-common
- 客户端:任意 VNC Viewer(如 TigerVNC Viewer、RealVNC Viewer、MobaXterm 内置 VNC)。建议优先使用 SSH 隧道 提高安全性。
二 快速上手 直接以用户会话启动
- 切换到目标用户并设置 VNC 密码:
- su - youruser
- vncpasswd(可设置仅观看密码)
- 启动虚拟桌面(示例为显示号 :1,分辨率 1920x1080):
- tigervncserver :1 -geometry 1920x1080 -localhost no
- 说明:显示号与端口关系为 :n → 5900+n,因此 :1 对应 5901。
- 常用管理:
- 查看会话:tigervncserver -list
- 关闭会话:tigervncserver -kill :1
- 连接示例:VNC Viewer 输入 服务器IP:5901。
三 生产推荐 systemd 服务方式
- RHEL/CentOS 7 模板方式(每个显示号一个服务单元):
- 复制模板:sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
- 编辑单元:将 替换为实际用户,按需设置分辨率,例如:
- ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
- 重新加载并启用:
- systemctl daemon-reload
- systemctl enable --now vncserver@:1.service
- RHEL/CentOS 8+/Fedora 新方式(集中用户映射):
- 编辑映射:/etc/tigervnc/vncserver.users,添加如 :2=user1
- 配置默认参数:/etc/tigervnc/vncserver-config-defaults,例如
- session=gnome
- alwaysshared
- 为用户设置密码:su - user1 && vncpasswd
- 启动服务:systemctl enable --now vncserver@:2
- 端口说明:显示号 :n 对应 5900+n(如 :2 → 5902)。
四 配置桌面会话与常见问题
- 配置 xstartup(决定登录后启动的桌面环境):
- 文件位置:~/.vnc/xstartup,务必 chmod +x
- Xfce 示例(轻量稳定):
- #!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
- GNOME 示例(会话变量与组件按需调整):
- #!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
- 常见问题处理:
- “A VNC server is already running as :1”:
- 先尝试 vncserver -kill :1
- 若残留套接字导致失败,清理:rm -f /tmp/.X11-unix/X1 后再启动
- 端口未监听或连接被拒:确认服务已启动(如 systemctl status vncserver@:1)、显示号与端口对应正确(:1→5901)。
五 防火墙与安全建议
- 防火墙放行(示例为永久放行 5901,多用户可按需放行一段端口):
- firewalld:sudo firewall-cmd --permanent --add-service=vnc-server && sudo firewall-cmd --reload
- 推荐通过 SSH 隧道 访问(避免直暴露 5900+ 端口到公网):
- 建立隧道:ssh -L 5901:127.0.0.1:5901 user@server
- 客户端连接:localhost:1(隧道将本地 5901 转发到服务器 5901)
- 若必须直连公网,建议仅开放必要端口、限制来源 IP,并优先使用强认证与加密通道。