Ubuntu TigerVNC 远程剪贴板共享实现指南
一、快速启用双向剪贴板
- 在 Ubuntu 的 VNC 会话中启动剪贴板通道守护进程,确保未被禁用:
- 查看是否运行:ps aux | grep vncconfig
- 若未运行,在会话内执行(将 :1 替换为你的实际显示号,如 :0、:2):
- vncconfig -nowin -display :1 &
- 注意:启动 vncserver 时不要加 -noclipboard 参数,否则会禁用剪贴板同步。
- Windows 客户端(如 TigerVNC Viewer)启用剪贴板:
- 连接前在 Viewer 的 Options/Properties → Clipboard 中勾选“Enable/Allow clipboard sync”(不同版本名称略有差异)。
二、增强与替代方案
- 使用 autocutsel 同步 PRIMARY 与 CLIPBOARD(解决常见“只能单向”或“X 选择”问题):
- 安装:sudo apt install autocutsel
- 在 ~/.vnc/xstartup 的会话启动命令后添加(示例为显示号 :1):
- autocutsel -fork &
- autocutsel -selection PRIMARY -fork &
- 说明:autocutsel 会在 CLIPBOARD 与 CUT_BUFFER 0(VNC 通道)以及 X 的 PRIMARY/CLIPBOARD 之间做桥接,通常可实现更稳定的双向复制粘贴。
- 若仍不稳定,可考虑替代协议/工具:
- RDP:Ubuntu 端安装 xrdp(sudo apt install xrdp xorgxrdp),Windows 远程桌面勾选“剪贴板”,一般开箱即用。
- NoMachine:双方安装 NoMachine,连接设置中启用“剪贴板 → 双向”。
三、xstartup 示例与显示号确认
- 示例(以 XFCE 为例,显示号 :1):
- 安装组件:sudo apt install xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common
- 编辑 ~/.vnc/xstartup(确保可执行:chmod +x ~/.vnc/xstartup):
- #!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
- 启动会话:vncserver -geometry 1920x1080 -dpi 96(将自动分配显示号,如 :1)
- 在会话内启动剪贴板:vncconfig -nowin -display :1 &
- 如需 autocutsel,追加:
- autocutsel -fork &
- autocutsel -selection PRIMARY -fork &
- 确认显示号的方法:
- 执行 vncserver -list 查看已分配的 :n
- 或查看 ~/.vnc/*.pid 与日志中的显示号,随后用 vncconfig -display :n 指定对应会话。
四、常见问题排查
- 只能单向复制(如仅 Ubuntu → Windows):
- 确认服务端会话内已运行 vncconfig;客户端剪贴板未被禁用;必要时加入 autocutsel 桥接 PRIMARY/CLIPBOARD。
- 客户端看不到剪贴板选项或选项无效:
- 升级 TigerVNC Viewer 至较新版本;不同版本选项名可能为“Enable clipboard”“Allow clipboard sync”等。
- 命令报 “Can’t open display” 或无效:
- 必须在 VNC 会话的图形环境内执行 vncconfig/autocutsel(SSH 纯终端无效);确认 -display 与当前会话一致(如 :1)。
- 文本能粘但图片/文件不行:
- VNC 的剪贴板通道对富内容支持有限,优先使用文本;如需文件传输,建议改用 SFTP/SCP 或 RDP 的驱动器重定向。
- 安全性建议:
- 通过 SSH 隧道访问 VNC:ssh -L 5901:127.0.0.1:5901 -N -f -l user remote_ip,然后客户端连接 localhost:5901,避免明文暴露 590x 端口。