Skip to content

VNC

VNC(Virtual Network Computing)是一个桌面共享协议,它还使用 RFB(Remote Frame Buffer)即远程桢缓冲区协议来通过网络传输鼠标和键盘移动。这些协议本身是明文传输的,在局域网内使用没啥问题,如果是外网使用需要通过 VPN 网络或者 SSH 隧道来安全使用。

目前最流行的开源实现是TigerVNC

安装 tigervnc

在 debian12 中需要安装几个组件:

vnc 服务器设置

VNC 推荐不要使用具有 root 权限的用户登录,因此我们首先需要准备一个非 root 用户且不要具有 sudo 权限,之后在进行设置。

  1. 登录到需要 vnc 登录的用户
Bash
su - vnc_login_user
  1. 设置 vnc 登录密码

注意并不是 vnc_login_user 的登录密码。vnc 连接只需要密码鉴权,这里的密码就是用于鉴权 vnc 登录的。有些教程也使用 vncserver 来设置密码,这是因为 vncserver 脚本在第一次启动时会运行 vncpasswd 命令。

VNC 密码会保存到 ~/.vnc/passwd 文件中

Bash
vncpasswd

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
  1. 设置用户配置

用户配置文件是 ~/.vnc/config:

Bash
session=gnome      # 要登录的会话,可以在 /usr/share/xsessions/ 中查看所有支持的会话
geometry=1200x720  # 登录后的显示分辨率
localhost          # 键在 localhost 中运行 VNC 服务器,之后需要配置 ssh 隧道
alwaysshared       # 共享连接
  1. 用户端口映射

VNC 默认的接口是 5900 每个用户需要映射自己的端口,编辑 /etc/tigervnc/vncserver.users:

Bash
:1=vnc_login_user   # 他表示 vnc_login_user 使用 5901 端口
  1. 启动服务
Bash
sudo systemctl start tigervncserver@:1.service
sudo systemctl enable tigervncserver@:1.service
  1. 设置 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,因此他们主要的用途是用于技术支持,管理员能够看到用户面临的错误时临时开启。

参考