Ubuntu VNC 远程协助实操指南
一 方案总览与选择
- 内置“屏幕共享”(Vino):Ubuntu 自带的 GNOME Screen Sharing 基于 VNC,图形界面配置简单,适合临时远程协助。注意部分旧客户端(如部分 macOS 版本)连不上加密的 Vino,需要关闭加密。
- 轻量会话 VNC(TightVNC/TigerVNC + Xfce):在无完整桌面或服务器版上,安装 TightVNC/TigerVNC 并搭配 Xfce,通过 SSH 隧道安全连接,适合需要长期、脚本化管理协助会话的场景。
- 现有会话共享(x11vnc):直接共享当前登录的 :0 会话,适合“当场接管”对方屏幕的协助;可配 systemd 开机自启与口令文件。
二 方案一 内置屏幕共享 Vino(最快速)
- 安装组件(若设置中无“屏幕共享”项):sudo apt install vino
- 开启共享:打开 设置 → 共享 → 屏幕共享,设置:
- 打开“屏幕共享”;建议选择“新连接需要密码”,便于无人值守协助;
- 记录计算机名(如 hostname.local),或在同一局域网用 IP 访问。
- 兼容性提示(macOS 旧版等):若出现“无法连接/加密不兼容”,可执行:
- gsettings set org.gnome.Vino require-encryption false
- 客户端连接:
- Ubuntu:用 Remmina 或 VNC Viewer 输入 vnc://hostname.local 或 vnc://IP;
- macOS:在“连接服务器”输入 vnc://hostname.local;
- Windows:用 RealVNC Viewer/TightVNC 输入 vnc://IP。
- 外网访问:不建议直接暴露 5900 端口,建议走 SSH 隧道(见文末通用步骤)。
三 方案二 TightVNC/TigerVNC + Xfce(可控、脚本化)
- 安装桌面与会话:sudo apt install xubuntu-desktop(或 xfce4 相关包)与 tightvncserver/tigervnc-standalone-server
- 首次设密:vncpasswd(生成 ~/.vnc/passwd)
- 配置启动脚本:编辑 ~/.vnc/xstartup
- 建议内容:
- #!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
- 赋权:chmod +x ~/.vnc/xstartup
- 启动会话:vncserver :1(将显示号 1 对应端口 5901)
- 安全加固:建议仅本地监听并配合 SSH 隧道(见文末通用步骤)
- 可选:配置 systemd 服务(/etc/systemd/system/vncserver@.service),以用户 为例:
- ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
- 启用:systemctl daemon-reload && systemctl enable --now vncserver@1
- 客户端连接:VNC Viewer 输入 IP:1(若走隧道则连 localhost:5901)。
四 方案三 x11vnc 共享当前登录会话(当场接管)
- 安装与设密:sudo apt install x11vnc;x11vnc -storepasswd(生成 ~/.vnc/passwd)
- 临时启动:x11vnc -display :0 -auth guess -rfbauth ~/.vnc/passwd -rfbport 5900 -shared -forever
- 开机自启(systemd,示例端口 8900):创建 /lib/systemd/system/x11vnc.service
- ExecStart=/usr/bin/x11vnc -display :0 -auth /home//.Xauthority -forever -loop -noxdamage -repeat -rfbauth /home//.vnc/passwd -rfbport 8900 -shared
- 启用:systemctl enable --now x11vnc.service
- 客户端连接:VNC Viewer 输入 IP:8900(或走 SSH 隧道连本地端口)。
五 通用安全与网络配置
- 防火墙放行(示例):sudo ufw allow 5901/tcp(若使用 :1;x11vnc 用 5900/tcp;自定义端口按实际放行)
- SSH 隧道(强烈推荐):
- 本地端口转发:ssh -L 5901:localhost:5901 user@server_ip
- 客户端连接:VNC Viewer 连 localhost:5901(外网也只需开放 SSH 端口 22)
- 端口对照:显示号 :1 → 5901/tcp,:2 → 5902/tcp,以此类推;x11vnc 默认 :0 → 5900/tcp。
六 常见问题与排障
- 连接被拒绝/超时:确认 VNC 服务已启动(如 vncserver :1)、防火墙放行对应端口、路由器/云安全组已放通;若走公网,优先用 SSH 隧道。
- 黑屏/无桌面:检查 ~/.vnc/xstartup 是否启动桌面(如 startxfce4 &),并确认已 chmod +x;必要时查看 ~/.vnc/*.log 定位。
- 加密不兼容(macOS 旧版等):Vino 可临时关闭加密 gsettings set org.gnome.Vino require-encryption false(仅在内网可信环境使用)。
- 会话残留:更换端口或重启前先 vncserver -kill :1;多用户协助时为每人分配不同显示号。