Ubuntu 上使用 TigerVNC 搭建远程桌面的完整步骤
一 准备与安装
- 更新索引并安装 TigerVNC 服务器(桌面环境需已安装,如未安装可先装 Xfce 或 Ubuntu Desktop):
- 安装命令:sudo apt update && sudo apt install tigervnc-standalone-server tigervnc-common
- 可选桌面:sudo apt install xfce4 xfce4-goodies(轻量稳定)或 sudo apt install ubuntu-desktop gnome-session gnome-terminal(GNOME 完整桌面)
- 为当前用户设置 VNC 登录密码:vncpasswd(是否创建只读密码选 n)
- 端口规则说明:显示号 :1 对应 5901/tcp,显示号 :2 对应 5902/tcp,以此类推(5900 + 显示号)
二 配置桌面会话与启动
- 生成初始配置(若未生成):先运行一次 vncserver,再用 vncserver -kill :1 停止,以便编辑配置
- 编辑会话启动脚本 ~/.vnc/xstartup,按桌面环境选择其一(务必赋予可执行权限:chmod +x ~/.vnc/xstartup)
Xfce(推荐,轻量稳定)
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
GNOME(Ubuntu Desktop 20.04/22.04 常见)
#!/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 &
- 启动会话(示例):vncserver :1 -geometry 1920x1080 -depth 32 -localhost no
- -localhost no 允许来自其他主机的连接;如仅本机/SSH转发连接可保持默认 localhost(更安全)
- 常用管理:vncserver -list(查看会话)、vncserver -kill :1(结束会话)
三 防火墙与端口开放
- UFW(Ubuntu 常见):开放对应端口,例如 sudo ufw allow 5901/tcp
- firewalld(如系统使用 firewalld):可按需开放 5901-5910/tcp 或临时放行
- 云服务器安全组:放行对应 TCP 5901+ 端口
- 建议:优先通过 SSH 隧道访问(见第四节),可避免直接暴露 VNC 端口
四 连接与安全加固
- 直接连接(示例):在客户端输入 服务器IP:5901。如使用 -localhost no,请确保防火墙/安全组已放行
- SSH 加密隧道(推荐):
- 本地端口转发:ssh -L 5901:127.0.0.1:5901 用户名@服务器IP -N -C
- 客户端连接:localhost:5901(经由本地隧道,更安全)
- 多用户与开机自启(systemd 模板)
- 新建:sudo nano /etc/systemd/system/vncserver@.service,示例(按需修改用户名、分辨率、色彩深度):
[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=你的用户名
Group=你的用户名
WorkingDirectory=/home/你的用户名
PIDFile=/home/你的用户名/.vnc/%H:590%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 32 -geometry 1920x1080 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
- 启用与启动:
- sudo systemctl daemon-reload
- sudo systemctl enable --now vncserver@1.service
- 其他显示号:vncserver@2.service、vncserver@3.service …
五 常见问题快速排查
- 连接被拒绝或超时
- 检查会话是否运行:vncserver -list
- 若监听在 127.0.0.1:5901,说明仅本地可连;重启并加上 -localhost no
- 检查防火墙/安全组是否放行对应 5901/tcp
- 黑屏/灰屏/无任务栏
- 确认 ~/.vnc/xstartup 与桌面环境匹配(Xfce 用 exec startxfce4;GNOME 用 dbus-launch --exit-with-session gnome-session & 等),并重启会话
- 无显示器(Headless)场景
- 可使用虚拟显示器驱动(如 xserver-xorg-video-dummy)或直接使用 TigerVNC 创建虚拟桌面会话(无需接显示器)