Ubuntu 上使用 TigerVNC 共享屏幕
一 安装与准备
- 安装 TigerVNC 组件:sudo apt update && sudo apt install tigervnc-standalone-server tigervnc-common -y
- 若系统未安装桌面环境,按需安装:sudo apt install ubuntu-desktop(GNOME,较重)或 sudo apt install xfce4(轻量,推荐)
- 设置 VNC 连接密码(与系统登录密码无关):执行 vncpasswd,可设置只读密码(建议不设或按需设置)
- 注意:VNC 默认只监听本地,远程访问需显式放开或配合 SSH 隧道
二 配置桌面会话启动脚本
- 新建或编辑启动脚本:nano ~/.vnc/xstartup,赋予执行权限:chmod +x ~/.vnc/xstartup
- 按桌面环境写入对应内容(二选一或按实际安装的环境选择)
GNOME 示例(Ubuntu 默认)
#!/bin/sh
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 &
Xfce 示例(轻量稳定)
#!/bin/sh
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 &
startxfce4 &
- 提示:不同 Ubuntu 版本(如 22.04/24.04)默认会话可能不同,请确保 xstartup 中的启动命令与实际桌面一致,否则易出现黑屏或无法进入会话
三 启动服务与网络放行
- 启动 VNC 会话(示例为显示编号 :1,对应端口 5901=5900+1)
- 基础:vncserver :1 -geometry 1920x1080 -depth 24
- 允许远程直连:vncserver :1 -geometry 1920x1080 -depth 24 -localhost no
- 防火墙放行(UFW):sudo ufw allow 5901/tcp;如未启用防火墙可跳过
- 多用户/多会话可使用不同显示号(如 :2 → 5902),避免端口冲突
- 查看/结束会话:vncserver -list;vncserver -kill :1
四 客户端连接与安全加固
- 客户端连接
- 直连:在 VNC Viewer 输入服务器地址与端口,如 192.168.1.100:5901 或 192.168.1.100:1(:1 即 5901)
- 推荐方式(加密):本地建立 SSH 隧道后连接本机端口
- 命令:ssh -L 5901:localhost:5901 -N -f -l your_username your_server_ip
- 客户端连接:localhost:1
- 安全建议
- 公网环境优先使用 SSH 隧道 或仅在内网开放端口
- 避免使用弱密码;必要时仅开放必要端口并限制来源 IP
- 如需系统级管理,可配置 /etc/tigervnc/vncserver.users(映射 :1=username)
五 常见问题快速排查
- 黑屏或进不去桌面
- 核对 ~/.vnc/xstartup 是否与已安装桌面匹配(GNOME 用 gnome-session &,Xfce 用 startxfce4 &)
- 查看日志:~/.vnc/hostname:1.log,根据报错调整脚本或安装缺失组件
- 无法连接
- 确认已执行 vncserver 且显示号正确(如 :1)
- 检查防火墙是否放行 5901/tcp,以及路由器/云安全组策略
- 若使用 -localhost no 仍不通,优先测试 SSH 隧道方式
- 分辨率异常
- 启动时调整参数:-geometry 1280x720 或 1920x1080 等
- 会话残留/端口占用
- 先 vncserver -kill :1,再重新启动;必要时更换显示号