在 Debian 上使用 TigerVNC 进行屏幕共享
一 安装与准备
- 更新软件源并安装 TigerVNC 组件:
- sudo apt update
- sudo apt install tigervnc-standalone-server tigervnc-common
- 为当前用户设置 VNC 访问密码(仅用于 VNC 登录,非系统密码):
- vncpasswd
- 可按需设置只读密码,用于仅观看的会话。
二 配置桌面会话
- 创建或编辑会话启动脚本:
- mkdir -p ~/.vnc && nano ~/.vnc/xstartup
- 赋予执行权限:
- 按桌面环境写入启动命令(示例,任选其一或按你的实际环境调整):
- XFCE(轻量稳定,推荐):
- #!/bin/sh
- unset SESSION_MANAGER
- unset DBUS_SESSION_BUS_ADDRESS
- exec startxfce4
- GNOME(Debian 11/12 常见):
- #!/bin/sh
- export GNOME_SHELL_SESSION_MODE=ubuntu
- export XDG_CURRENT_DESKTOP=ubuntu:GNOME
- export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
- exec /etc/X11/Xsession ubuntu-xsession
- KDE Plasma:
- #!/bin/sh
- exec startplasma-x11
- 通用回退(使用系统 xinitrc):
- #!/bin/sh
- unset SESSION_MANAGER
- unset DBUS_SESSION_BUS_ADDRESS
- exec /etc/X11/xinit/xinitrc
三 启动与防火墙
- 启动 VNC 会话(显示号与端口映射:显示号 N 对应端口 5900+N):
- vncserver :1 -geometry 1920x1080 -depth 24
- 停止会话:vncserver -kill :1
- 开放防火墙端口(示例为显示号 :1 的 5901/tcp):
- UFW:sudo ufw allow 5901/tcp && sudo ufw reload
- firewalld:sudo firewall-cmd --permanent --add-port=5901/tcp && sudo firewall-cmd --reload
四 客户端连接
- 在另一台机器安装 VNC 客户端(如 TigerVNC Viewer、RealVNC Viewer、TightVNC Viewer)。
- 连接到服务器:
- 地址格式:<服务器IP>:<显示号>,例如:192.168.1.100:1
- 在弹出的窗口中输入第 2 步设置的 VNC 密码即可进入远程桌面。
五 进阶 自启动与安全性
- 使用 systemd 管理并按需自启(将 <your_username> 替换为实际用户名,显示号示例为 :1):
- 新建服务:sudo nano /etc/systemd/system/vncserver@.service
- 内容示例:
- [Unit]
- Description=Start TigerVNC server at startup
- After=syslog.target network.target
- [Service]
- Type=forking
- User=<your_username>
- Group=<your_username>
- WorkingDirectory=/home/<your_username>
- PIDFile=/home/<your_username>/.vnc/%H:%i.pid
- ExecStartPre=-/usr/bin/vncserver -kill :%i > /devref/null 2>&1
- ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
- ExecStop=/usr/bin/vncserver -kill :%i
- [Install]
- WantedBy=multi-user.target
- 启用与启动:
- sudo systemctl daemon-reload
- sudo systemctl enable vncserver@1.service
- sudo systemctl start vncserver@1.service
- 安全建议:
- 优先通过 SSH 隧道转发 VNC(例如本地端口 5901 转发到远端 localhost:5901),再连接 localhost:1,可避免明文暴露 VNC 端口。
- 仅开放必要端口,保持系统与 VNC 组件更新,避免使用 root 远程登录。