在 Ubuntu 上使用 TigerVNC 共享文件的实用方案
一 功能限制与总体思路
- TigerVNC 服务器本身不实现文件传输(客户端如 VNC Viewer 的“文件传输”按钮对 TigerVNC 无效)。若必须依赖 VNC 内置传输,需改用支持该功能的服务器(如 RealVNC Server 企业版)。否则,推荐通过操作系统级共享(Samba/NFS/SSH/SFTP)来在 VNC 会话内外交换文件。
二 方案一 操作系统级共享 Samba 推荐
- 适用场景:跨平台、图形界面直接访问、多人协作。
- 服务端(Ubuntu)步骤:
- 安装 Samba
sudo apt update
sudo apt install samba
- 创建共享目录
mkdir -p /home/$USER/shared
chmod 775 /home/$USER/shared
- 配置 /etc/samba/smb.conf,在末尾添加
[shared]
path = /home/$USER/shared
browseable = yes
read only = no
valid users = $USER
- 设置 Samba 用户密码
sudo smbpasswd -a $USER
- 启动服务
sudo systemctl restart smbd
sudo ufw allow samba # 如启用防火墙
- 客户端访问方式:
- Ubuntu 文件管理器:连接到 smb://服务器IP/shared
- Windows:在“运行”输入 \服务器IP\shared
- macOS:Finder → 前往 → 连接服务器 → smb://服务器IP/shared
- 说明:VNC 会话中可直接用文件管理器访问上述 Samba 共享;也可在 VNC 会话外通过同一共享进行拷贝。
三 方案二 其他系统与协议备选
- SSH/SFTP(最简便、加密好)
- 安装 SSH 服务:sudo apt install openssh-server
- 从客户端拷贝:scp file user@服务器IP:/home/user/
- 图形化 SFTP:在文件管理器选择“连接到服务器”→ sftp://服务器IP
- NFS(同网段 Linux 之间高效)
- 服务端导出:/etc/exports 加入 /home/$USER/shared 服务器IP(rw,sync,no_subtree_check)
- 启用:sudo exportfs -ra && sudo systemctl restart nfs-kernel-server
- 客户端挂载:sudo mount 服务器IP:/home/$USER/shared /mnt/share
- 以上方式与 VNC 无关,适合在 VNC 会话内外稳定传输文件。
四 方案三 若必须使用 VNC 内置文件传输
- 更换为支持文件传输的服务器软件(非 TigerVNC):
- 例如 RealVNC Server 企业版 4.0+ 才支持 VNC 文件传输;安装并设置许可证后,使用 RealVNC Viewer 连接即可使用“文件传输”功能。
- 注意:开源/免费版 RealVNC Server 不支持此功能;TigerVNC 官方亦未实现该能力。
五 快速排错与安全建议
- 端口与防火墙
- 显示号 :1 对应端口 5901/tcp;如启用防火墙需放行:sudo ufw allow 5901/tcp
- 日志定位
- TigerVNC 日志位于 ~/.vnc/*.log,启动失败或异常可先查看日志。
- 连接与权限
- Samba 共享请确保用户存在、密码正确、目录权限为 775/770,以及 SELinux/AppArmor 未拦截访问。
- 加密与认证
- 建议启用 VNC 密码认证(vncpasswd),并在公网使用 SSH 隧道或 TLS 加密通道,避免明文传输。