温馨提示×

Ubuntu TigerVNC如何实现远程剪贴板共享

小樊
44
2025-12-24 18:43:02
栏目: 智能运维

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 会在 CLIPBOARDCUT_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 端口。

0