Ubuntu 上使用 TigerVNC 远程桌面的快速步骤
一 环境准备与安装
- 更新系统并安装桌面环境(若未安装):sudo apt update && sudo apt install xfce4 xfce4-goodies(轻量推荐)或 sudo apt install ubuntu-desktop(GNOME)。
- 安装 TigerVNC 服务器:sudo apt install tigervnc-standalone-server tigervnc-common。
- 为当前用户设置 VNC 访问密码:vncpasswd(建议仅设操作密码,不启用仅查看)。
二 配置桌面会话与启动
- 生成初始配置(如未生成):vncserver(首次会创建 ~/.vnc 与密码文件)。
- 编辑会话启动脚本:nano ~/.vnc/xstartup,按桌面环境写入并赋权 chmod +x ~/.vnc/xstartup。
- Xfce(轻量稳定):
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
- GNOME(Ubuntu 默认):
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
exec gnome-session
- 常用启动参数:vncserver :1 -geometry 1920x1080 -depth 24 -localhost no
- 显示编号与端口映射::1 → 5901,:2 → 5902(规则为 5900 + 显示编号)。
- -localhost no 允许来自其他主机的连接;若仅本机测试可省略或设为 yes。
- 查看与关闭:vncserver -list;vncserver -kill :1。
三 连接与安全加固
- 直连方式(开放端口时):在客户端(如 VNC Viewer)输入 服务器IP:5901。若启用了防火墙(如 ufw),放行端口:sudo ufw allow 5901/tcp。
- SSH 隧道(推荐,加密且无需暴露端口):
- 本地端口转发:ssh -L 5901:127.0.0.1:5901 用户名@服务器IP
- 客户端连接:localhost:1(隧道映射到本机 5901,对应服务器 :1)。
四 常见问题与排查
- 连接被拒绝或超时:
- 检查服务是否运行:vncserver -list;若仅监听 127.0.0.1,重启并加 -localhost no。
- 检查防火墙/云安全组是否放行对应端口(如 5901)。
- 黑屏/灰屏或仅背景:
- 确认已安装桌面环境(如 xfce4/ubuntu-desktop)。
- 核对 ~/.vnc/xstartup 内容正确且具可执行权限;必要时用 vncserver -kill :1 后重启。
- Ubuntu 24.04 默认使用 Wayland,可能与 VNC 兼容性差:
- 编辑 /etc/gdm3/custom.conf,设置 WaylandEnable=false,重启 GDM3:sudo systemctl restart gdm3。
五 开机自启与多用户管理(可选)
- systemd 单实例服务(以 :1 为例,替换 为实际用户名):
- 创建服务:sudo nano /etc/systemd/system/vncserver@:1.service
- 写入示例(Type=forking):
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=<username>
Environment=HOME=/home/<username>
Environment="DISPLAY=:%i"
PIDFile=/home/<username>/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -localhost no
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- 启用并启动:sudo systemctl daemon-reload && sudo systemctl enable --now vncserver@:1.service
- 查看状态与日志:systemctl status vncserver@:1.service;journalctl -xeu vncserver@:1.service
- 多用户场景(RHEL/CentOS 系常见):编辑 /etc/tigervnc/vncserver.users 映射显示号与用户(如 :2=user1),并为各用户设置 vncpasswd,再用 systemctl 管理对应服务。