5.3. 以多个用户身份远程访问桌面
您可以远程连接到 RHEL 服务器上的桌面,并以不同用户身份同时打开多个会话。
以下说明适用于 RHEL 8.3 及更新版本。如果您使用 RHEL 8.0 到 8.2,请参阅红帽知识库解决方案 如何在 Red Hat Enterprise Linux 8.0 - 8.2 中配置特定于用户的 VNC 服务器。
先决条件
安装 VNC 服务器:
yum install tigervnc-server
# yum install tigervnc-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 VNC 客户端:
yum install tigervnc
# yum install tigervncCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.1. VNC 中端口和显示号与用户的映射 复制链接链接已复制到粘贴板!
通过 VNC,客户端可以连接到服务器上不同用户的桌面会话。显示号和 TCP 端口号会附加到导出 VNC 会话的每个服务器用户身上。客户端使用端口号来指定它要连接服务器的哪个用户。
如果多个客户端使用相同的端口号进行连接,则它们都打开与同一服务器用户的 VNC 会话。
您必须为导出 VNC 会话的每个服务器用户配置映射。对于每个这样的用户,您必须选取一个唯一的端口和显示号。
推荐的映射
红帽建议您对第一个用户从端口号 5902 ,显示号 2 开始,并为每个额外的服务器用户数字递增 1。
端口号 5900 和显示 0 代表当前登录到图形会话的服务器用户。您无法为已登录到图形会话的用户启动 VNC 服务器。
| 端口号 | 显示号 | 备注 |
|---|---|---|
| 5900 | 0 | 已登录用户 |
| 5901 | 1 | |
| 5902 | 2 | 第一个推荐的 VNC 用户 |
| 5903 | 3 | |
| … | … |
红帽建议您不要配置 root 用户来导出 VNC 会话。root VNC 会话是不安全的,会话的某些元素可能无法按预期工作。
防火墙规则
您必须在防火墙配置中打开所选端口。在防火墙中允许 vnc-server 服务打开从 5900 至 5903 的端口。如果需要启用对其他服务器用户的访问权限,则必须手动指定端口号来打开 5903 以上的端口。
5.3.2. VNC 服务器配置文件 复制链接链接已复制到粘贴板!
多个配置文件会影响 VNC 服务器的行为。您可以配置用户映射和各种全局选项。
从 TigerVNC 1.14 开始,配置文件存储在 $HOME/.config/tigervnc 下,以及状态文件,如 logs 和 saved_sessions,在 $HOME/.local/state/tigervnc 下。
常规选项
您可以在 /etc/tigervnc/vncserver-config-defaults 配置文件中配置 VNC 服务器的常规选项。该文件使用以下格式:
option1=value option2
option1=value
option2
例如:
session=gnome alwaysshared securitytypes=vncauth,tlsvnc desktop=sandbox geometry=2000x1200
session=gnome
alwaysshared
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
配置文件的优先级
VNC 服务器读取以下常规选项文件,顺序为从最重要到最不重要:
/etc/tigervnc/vncserver-config-mandatory此文件取代了默认配置,其优先级高于按用户的配置。其目的是用于希望强制实施特定 VNC 选项的系统管理员。
$HOME/.vnc/config单个用户可以覆盖此文件中的默认 VNC 配置。
/etc/tigervnc/vncserver-config-defaults此文件存储默认的 VNC 配置。
用户映射
您可以在 /etc/tigervnc/vncserver.users 配置文件中配置用户与其关的端口和显示号之间的映射。该文件使用以下格式:
:number=user
:number=user
例如:
:2=test :3=vncuser
:2=test
:3=vncuser
5.3.3. 在服务器上启用多用户 VNC 访问 复制链接链接已复制到粘贴板!
此流程配置 RHEL 服务器,以便多个用户可以同时在其上打开 VNC 会话。
先决条件
如果您之前使用
systemd单元文件配置了 VNC,请删除所有过时的 VNC 配置:rm /etc/systemd/system/vncserver@.service
[root]# rm /etc/systemd/system/vncserver@.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
将用户映射到显示号和端口号。
在
/etc/tigervnc/vncserver.users配置文件中,为每个要导出 VNC 会话的服务器用户添加一行::user-number=user-name
:user-number=user-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用映射到所选现有用户的端口号和显示号替换 user-number。
- 使用所选现有用户的用户名替换 user-name。
例如:
:2=vncuser
:2=vncuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在防火墙中打开 5900 到 5903 的 TCP 端口:
firewall-cmd --permanent --add-service=vnc-server
[root]# firewall-cmd --permanent --add-service=vnc-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入防火墙规则:
firewall-cmd --reload
[root]# firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/tigervnc/vncserver-config-defaults配置文件中添加以下行:session=gnome alwaysshared
session=gnome alwayssharedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个配置有以下影响:
- 当远程用户登录时,VNC 服务器会启动 GNOME 会话。
- 多个用户可以同时连接到 VNC 服务器。
作为导出 VNC 会话的每个服务器用户,为用户设置 VNC 密码:
vncpasswd
[regular-user]$ vncpasswdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在连接到服务器上的桌面时,远程客户端必须输入此密码。
如果您之前为用户配置了 VNC,请确保配置文件具有正确的 SELinux 上下文:
restorecon -RFv ~/.vnc
[regular-user]$ restorecon -RFv ~/.vncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为常规用户启用并启动 VNC 服务器单元:
systemctl enable --now vncserver@:user-number
[root]# systemctl enable --now vncserver@:user-numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果服务器使用专有 Nvidia 驱动程序,请禁用 Wayland:
-
取消
/etc/gdm/custom.conf配置文件中WaylandEnable=False行的注释。 -
将
DefaultSession=gnome-xorg.desktop选项添加到配置文件的[daemon]部分。 - 重启服务器。
-
取消
5.3.4. 以多个用户身份连接到 VNC 服务器 复制链接链接已复制到粘贴板!
这个流程使用 vncviewer 应用程序连接到远程桌面会话。您可以同时打开到远程桌面的多个连接。
先决条件
- 服务器上启用了多个用户的远程桌面访问。详情请参阅在 服务器 上启用多用户 VNC 访问。
流程
连接到 VNC 服务器:
vncviewer --shared server-ip:display
$ vncviewer --shared server-ip:displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 server-ip 替换为您要连接的服务器的 IP 地址。
- 使用服务器用户导出 VNC 会话的显示号替换 display。