VNC
VNC(Virtual Network Computing)是一个桌面共享协议,它还使用 RFB(Remote Frame Buffer)即远程桢缓冲区协议来通过网络传输鼠标和键盘移动。这些协议本身是明文传输的,在局域网内使用没啥问题,如果是外网使用需要通过 VPN 网络或者 SSH 隧道来安全使用。
目前最流行的开源实现是TigerVNC。
安装 tigervnc
在 debian12 中需要安装几个组件:
- tigervnc-common: VNC Server 需要的公共库
- tigervnc-standalone-server: 独立的 VNC 服务器
- tigervnc-xorg-extension: X11 扩展,非必需
vnc 服务器设置
VNC 推荐不要使用具有 root 权限的用户登录,因此我们首先需要准备一个非 root 用户且不要具有 sudo 权限,之后在进行设置。
- 登录到需要 vnc 登录的用户
- 设置 vnc 登录密码
注意并不是 vnc_login_user 的登录密码。vnc 连接只需要密码鉴权,这里的密码就是用于鉴权 vnc 登录的。有些教程也使用 vncserver 来设置密码,这是因为 vncserver 脚本在第一次启动时会运行 vncpasswd 命令。
VNC 密码会保存到
~/.vnc/passwd
文件中
- 设置用户配置
用户配置文件是 ~/.vnc/config
:
Bash
session=gnome # 要登录的会话,可以在 /usr/share/xsessions/ 中查看所有支持的会话
geometry=1200x720 # 登录后的显示分辨率
localhost # 键在 localhost 中运行 VNC 服务器,之后需要配置 ssh 隧道
alwaysshared # 共享连接
- 用户端口映射
VNC 默认的接口是 5900 每个用户需要映射自己的端口,编辑 /etc/tigervnc/vncserver.users
:
- 启动服务
- 设置 SSH 隧道来连接 VNC 服务器
Bash
# 使用 5901 端口和用户 vnc_login_user 创建用于 VNC 服务器 192.168.2.15 的 SSH 隧道
ssh -L 5901:127.0.0.1:5901 -N -f -l vnc_login_user 192.168.1.5.15
至此所有设置都完成了。可以使用 VNC 客户端来连接了。
Session 必须登录
无论是gnome-remote-desktop还是 VNC 都必须保证用户已经登录了 Session,因此他们主要的用途是用于技术支持,管理员能够看到用户面临的错误时临时开启。