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
  • 安装 VNC 客户端:

    # yum install tigervnc

5.3.1. VNC 中端口和显示号与用户的映射

通过 VNC,客户端可以连接到服务器上不同用户的桌面会话。显示号和 TCP 端口号会附加到导出 VNC 会话的每个服务器用户身上。客户端使用端口号来指定它要连接服务器的哪个用户。

如果多个客户端使用相同的端口号进行连接,则它们都打开与同一服务器用户的 VNC 会话。

您必须为导出 VNC 会话的每个服务器用户配置映射。对于每个这样的用户,您必须选取一个唯一的端口和显示号。

推荐的映射

红帽建议您对第一个用户从端口号 5902 ,显示号 2 开始,并为每个额外的服务器用户数字递增 1。

端口号 5900 和显示 0 代表当前登录到图形会话的服务器用户。您无法为已登录到图形会话的用户启动 VNC 服务器。

表 5.1. 端口和显示号对

端口号显示号备注

5900

0

已登录用户

5901

1

 

5902

2

第一个推荐的 VNC 用户

5903

3

 

 
重要

红帽建议您不要配置 root 用户来导出 VNC 会话。root VNC 会话是不安全的,会话的某些元素可能无法按预期工作。

防火墙规则

您必须在防火墙配置中打开所选端口。在防火墙中允许 vnc-server 服务打开从 5900 至 5903 的端口。如果需要启用对其他服务器用户的访问权限,则必须手动指定端口号来打开 5903 以上的端口。

5.3.2. VNC 服务器配置文件

多个配置文件会影响 VNC 服务器的行为。您可以配置用户映射和各种全局选项。

常规选项

您可以在 /etc/tigervnc/vncserver-config-defaults 配置文件中配置 VNC 服务器的常规选项。该文件使用以下格式:

option1=value
option2

例如:

session=gnome
alwaysshared
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200

配置文件的优先级

VNC 服务器读取以下常规选项文件,顺序为从最重要到最不重要:

  1. /etc/tigervnc/vncserver-config-mandatory

    此文件取代了默认配置,其优先级高于按用户的配置。其目的是用于希望强制实施特定 VNC 选项的系统管理员。

  2. $HOME/.vnc/config

    单个用户可以覆盖此文件中的默认 VNC 配置。

  3. /etc/tigervnc/vncserver-config-defaults

    此文件存储默认的 VNC 配置。

用户映射

您可以在 /etc/tigervnc/vncserver.users 配置文件中配置用户与其关的端口和显示号之间的映射。该文件使用以下格式:

:number=user

例如:

:2=test
:3=vncuser

其它资源

  • 有关可用的配置选项列表,请查看 Xvnc(1) 手册页。

5.3.3. 在服务器上启用多用户 VNC 访问

此流程配置 RHEL 服务器,以便多个用户可以同时在其上打开 VNC 会话。

先决条件

  • 如果您之前使用 systemd 单元文件配置了 VNC,请删除所有过时的 VNC 配置:

    [root]# rm /etc/systemd/system/vncserver@.service

流程

  1. 将用户映射到显示号和端口号。

    /etc/tigervnc/vncserver.users 配置文件中,为每个要导出 VNC 会话的服务器用户添加一行:

    :user-number=user-name
    • 使用映射到所选现有用户的端口号和显示号替换 user-number
    • 使用所选现有用户的用户名替换 user-name

    例如:

    :2=vncuser
  2. 在防火墙中打开 5900 到 5903 的 TCP 端口:

    [root]# firewall-cmd --permanent --add-service=vnc-server
  3. 重新载入防火墙规则:

    [root]# firewall-cmd --reload
  4. /etc/tigervnc/vncserver-config-defaults 配置文件中添加以下行:

    session=gnome
    alwaysshared

    这个配置有以下影响:

    • 当远程用户登录时,VNC 服务器会启动 GNOME 会话。
    • 多个用户可以同时连接到 VNC 服务器。
  5. 作为导出 VNC 会话的每个服务器用户,为用户设置 VNC 密码:

    [regular-user]$ vncpasswd

    在连接到服务器上的桌面时,远程客户端必须输入此密码。

  6. 如果您之前为用户配置了 VNC,请确保配置文件具有正确的 SELinux 上下文:

    [regular-user]$ restorecon -RFv ~/.vnc
  7. 为常规用户启用并启动 VNC 服务器单元:

    [root]# systemctl enable --now vncserver@:user-number
  8. 如果服务器使用专有 Nvidia 驱动程序,请禁用 Wayland:

    1. 取消 /etc/gdm/custom.conf 配置文件中 WaylandEnable=False 行的注释。
    2. DefaultSession=gnome-xorg.desktop 选项添加到配置文件的 [daemon] 部分。
    3. 重启服务器。

其它资源

5.3.4. 以多个用户身份连接到 VNC 服务器

这个流程使用 vncviewer 应用程序连接到远程桌面会话。您可以同时打开到远程桌面的多个连接。

先决条件

流程

  • 连接到 VNC 服务器:

    $ vncviewer --shared server-ip:display
    • server-ip 替换为您要连接的服务器的 IP 地址。
    • 使用服务器用户导出 VNC 会话的显示号替换 display