要安装适用于 Horizon Agent for Linux,必须满足 Linux 操作系统、Linux 虚拟机、VMware Horizon 系统组件和 vSphere 平台的特定要求。

Horizon Agent 支持的 Linux 版本

下表列出了经过测试且受 Horizon Agent 支持的 Linux 操作系统。

表 1. Horizon Agent 支持的 Linux 操作系统
Linux 分发包 架构
Ubuntu 20.04 和 18.04 x64
Red Hat Enterprise Linux (RHEL) Workstation 7.6、7.7、7.8、7.9、8.0、8.1、8.2、8.3、8.4 和 8.5 x64
Red Hat Enterprise Linux (RHEL) Server 7.8、7.9、8.4 和 8.5 x64
CentOS 7.6、7.7、7.8 和 7.9 x64
SUSE Linux Enterprise Desktop (SLED) 12 SP3、15 SP2 和 15 SP3 x64
SUSE Linux Enterprise Server (SLES) 12 SP3、12 SP5、15 SP2 和 15 SP3 x64
注: Horizon Agent 在某些 Linux 分发包中具有依赖项包。有关详细信息,请参阅 安装 Horizon Agent 的依赖项包

某些功能仅在有限的部分 Linux 操作系统上受支持。有关更多信息,请参阅本文档中讨论特定功能的部分。

所需的平台和软件版本

要安装并使用 Horizon Agent for Linux,您的部署必须满足 vSphere 平台、Horizon Connection Server 和 Horizon Client 软件的特定要求。

表 2. 所需的平台 VMware Horizon 软件版本
平台和软件 支持的版本
vSphere 平台版本
  • vSphere 7.0 或更高版本
  • vSphere 6.7 或更高版本
  • vSphere 6.5 U1 或更高版本
Horizon 环境
  • Horizon Connection Server 2111
Horizon Client 软件
  • 适用于 Android 的 Horizon Client 2203
  • 适用于 Windows 的 Horizon Client 2203
  • 适用于 Linux 的 Horizon Client 2203
  • 适用于 Mac 的 Horizon Client 2203
  • 适用于 iOS 的 Horizon Client 2203
  • Chrome 和 Firefox 上的 HTML Access 2203
  • 支持 VMware Blast 协议的零客户端
    注: 不支持 Teradici PCoIP 零客户端。

Linux 虚拟机使用的 TCP/UDP 端口

Horizon 8 Agent 和 Horizon Client 使用 TCP 或 UDP 端口进行相互之间以及它们与各种 Horizon 8 Server 组件之间的网络访问。

表 3. Linux 虚拟机使用的 TCP/UDP 端口
端口 目标 端口 协议 说明
Horizon Client * Linux 代理 22443 TCP/UDP 如果使用了 Blast 安全网关,则为 Blast
Horizon 8 连接服务器或 Unified Access Gateway 设备 * Linux 代理 22443 TCP/UDP 如果使用了 Blast 安全网关,则为 Blast
Horizon 8 Agent * Horizon 8 连接服务器 4001、4002 TCP JMS SSL 流量
注: 有关客户端使用的 TCP 和 UDP 端口的更多信息,请参阅 《Horizon 安全指南》文档和 VMware Horizon 指南中的“网络端口”

要允许用户连接到其 Linux 桌面,这些桌面必须可以接受来自 Horizon Client 设备、Unified Access GatewayHorizon Connection Server的入站 TCP 连接。

在 Ubuntu 分发包中,已默认配置 iptables 防火墙并设置了一条“ACCEPT”的输入策略。

在 RHEL 和 CentOS 分发包中,如果可能,Horizon Agent 安装程序脚本将配置 iptables 防火墙并设置一条“ACCEPT”的输入策略。

请确保 RHEL 或 CentOS 客户机操作系统上的 iptables 具有一条“ACCEPT”的输入策略,用于接受来自 Blast 端口 22443 的新连接。

启用 BSG 后,将通过 Horizon Connection Server上的 BSG 在 Horizon Client 设备与 Linux 桌面之间建立客户端连接。未启用 BSG 时,将直接在 Horizon Client 设备与 Linux 桌面之间建立连接。

验证 Linux 虚拟机使用的 Linux 帐户

下表列出了 Linux 虚拟机使用的帐户名称和帐户类型。

表 4. 帐户名称和帐户类型
帐户名称 帐户类型 使用者
Linux 操作系统内置 Java Standalone Agent、mksvchanserver、Shell 脚本
vmwblast 由 Linux 代理安装程序创建 VMwareBlastServer
<当前登录用户> Linux 操作系统内置或 AD 用户或 LDAP 用户 Python 脚本

桌面环境

Horizon Agent for Linux 支持不同 Linux 分发包中的多种桌面环境。下表列出了每个 Linux 分发包的默认桌面环境,以及 Horizon Agent for Linux 支持的其他桌面环境。
表 5. 支持的桌面环境
Linux 分发包 默认桌面环境 Horizon Agent for Linux 支持的桌面环境
Ubuntu 20.04/18.04 Gnome Gnome Ubuntu、K 桌面环境 (KDE)、MATE
RHEL/CentOS 7.x Gnome Gnome、KDE
RHEL 8.x Gnome Gnome
SLED/SLES Gnome Gnome
注: Gnome Display Manager (GDM) 是 Linux 桌面唯一支持的显示管理器。有关更多信息,请参阅 知识库文章 87459

仅当您的 Linux 桌面使用 GDM3 欢迎程序(登录屏幕)时,才可对 KDE 和 MATE 桌面环境使用单点登录 (SSO)。您必须使用用于安装桌面环境的命令中列出的命令安装 KDE 和 MATE。

使用 RHEL/CentOS 7.x 和 Ubuntu 分发包时,SSO 无法对锁定的 KDE 会话进行解锁。您必须手动输入密码才能对锁定的会话解锁。

要更改在某个支持的 Linux 分发包中使用的默认桌面环境,您必须执行以下步骤并使用适用于您的 Linux 桌面的命令。

  1. 使用默认桌面环境设置安装支持的 Linux 分发包的操作系统。
  2. 为您的特定 Linux 分发包运行下表中所述的相应命令。
    表 6. 用于安装桌面环境的命令
    Linux 分发包 新的默认桌面环境 用于更改默认桌面环境的命令
    RHEL/CentOS 7.x KDE
    yum groupinstall "KDE Plasma Workspaces"
    Ubuntu 20.04/18.04 KDE
    apt install plasma-desktop
    Ubuntu 20.04/18.04 MATE 1.225
    apt install ubuntu-mate-desktop
  3. 要开始使用新的默认桌面环境,请重新启动桌面。
如果您在装有多个桌面环境的 Linux 桌面上启用了 SSO,请使用以下信息选择要在 SSO 会话中使用的桌面环境。
  • 对于 Ubuntu 20.04/18.04 和 RHEL/CentOS 7.x,请使用下表中的信息设置 /etc/vmware/viewagent-custom.conf 文件中的 SSODesktopType 选项,以指定要用于 SSO 的桌面环境。
    表 7. SSODesktopType 选项
    桌面类型 SSODesktopType 选项设置
    MATE SSODesktopType=UseMATE
    GnomeUbuntu SSODesktopType=UseGnomeUbuntu
    GnomeFlashback SSODesktopType=UseGnomeFlashback
    KDE SSODesktopType=UseKdePlasma
    GnomeClassic SSODesktopType=UseGnomeClassic
  • 对于 RHEL 8.x,要让 SSO 登录会话使用 Gnome Classic,请从 /usr/share/xsession 目录中移除 Gnome Classic 启动文件以外的所有桌面启动文件。例如,可使用下面的一组命令。
    cd /usr/share/xsessions
    mkdir backup
    mv *.desktop backup
    mv backup/gnome-classic.desktop ./
    完成初始设置后,最终用户必须注销或重新引导其 Linux 桌面,才能将 Gnome Classic 用作下一个 SSO 会话中的默认桌面。

如果您在装有多个桌面环境的 Linux 桌面上停用了 SSO,则无需执行前面所述的任何步骤。最终用户在登录该 Linux 桌面时,必须选择其所需的桌面环境。

网络要求

VMware Blast Extreme 支持用户数据报协议 (UDP) 和传输控制协议 (TCP)。网络状况会影响 UDP 和 TCP 的性能。为获得最佳用户体验,请根据网络条件选择 UDP 或 TCP。
  • 如果网络条件良好(例如处于局域网 (LAN) 环境中),请选择 TCP。
  • 如果网络条件较差(例如处于广域网 (WAN) 环境中,在该环境中可能会发生数据包丢失和时间延迟),请选择 UDP。
使用网络分析器工具(例如,Wireshark)来确定 VMware Blast Extreme 使用的是 TCP 还是 UDP。可使用下面的一组步骤(使用 Wireshark)作为参考示例。
  1. 在您的 Linux 虚拟机上下载并安装 Wireshark。
    对于 RHEL/CentOS:
    sudo yum install wireshark
    对于 Ubuntu:
    sudo apt install tshark
  2. 使用 VMware Horizon Client 连接到 Linux 桌面。
  3. 打开终端窗口并运行以下命令,此命令将显示 VMware Blast Extreme 使用的 TCP 软件包或 UDP 软件包。
    sudo tshark -i any | grep 22443
USB 重定向和客户端驱动器重定向 (CDR) 功能容易受网络条件的影响。如果网络条件不佳(例如带宽受限,并且伴有时间延迟和数据包丢失),用户体验会变差。在此类条件下,最终用户可能会遇到以下情形。
  • 复制远程文件的速度可能较慢。在这种情况下,请改为传输较小的文件。
  • 远程 Linux 桌面中不显示 USB 设备。
  • USB 数据无法完整传输。例如,在复制大型文件时,获得的文件可能小于原始文件。

用于 USB 重定向的 VHCI 驱动程序

注: 要确定 VHCI 驱动程序的正确安装顺序,请遵循以下准则:
  • 如果要使用 .tar.gz tar 安装程序安装 Horizon Agent,必须先下载并解压缩 tar 安装程序,然后安装 VHCI 驱动程序,然后使用 USB 重定向功能的安装参数安装 Horizon Agent
  • 如果要使用 .rpm RPM 安装程序安装 Horizon Agent,必须先安装 Horizon Agent,然后再安装 VHCI 驱动程序,然后将 USB 重定向功能添加到 Horizon Agent 配置。

有关更多信息,请参阅在 Linux 虚拟机上安装 Horizon Agent

USB 重定向功能依赖于 USB 虚拟主机控制器接口 (Virtual Host Controller Interface, VHCI) 内核驱动程序。要支持 USB 3.0 和 USB 重定向功能,必须通过执行以下步骤安装 VHCI 驱动程序:

  1. https://sourceforge.net/projects/usb-vhci/files/linux%20kernel%20module/ 下载 USB VHCI 源代码。
  2. 确定 VHCI 修补程序文件的完整路径,具体取决于 Horizon Agent 安装程序格式。有关准则,请参阅以下示例。
    • (Tar 安装程序)如果下载并解压缩 tar 安装程序 VMware-horizonagent-linux-x86_64-YYMM-yyy-xxxxxxx.tar.gz /install_tmp/ 目录下,full-path_to_patch-file/install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxx/resources/vhci/patch/vhci.patch
    • (RPM 安装程序)如果下载 RPM 安装程序 VMware-horizonagent-linux-YYMM-y.y.y-xxxxxxx.el8.x86_64.rpm,并使用它安装 Horizon Agent,则 full-path_to_patch-file/usr/lib/vmware/viewagent/resources/vhci/patch/vhci.patch
  3. 要编译 VHCI 驱动程序源代码并在 Linux 系统上安装生成的二进制文件,请使用下表中列出的命令。将命令中的 full-path_to_patch-file 替换为您在上一步中确定的文件路径。
    例如,如果文件路径为 /install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxx/resources/vhci/patch/vhci.patch,则 patch 命令会变为:
    patch -p1 < /install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxxi/resources/vhci/patch/vhci.patch
表 8. 编译并安装 USB VHCI 驱动程序
Linux 分发包 编译并安装 USB VHCI 驱动程序的步骤
Ubuntu 20.04/18.04
  1. 安装依赖项包。
    apt-get install make
    apt-get install gcc
    apt-get install libelf-dev
  2. 编译并安装 VHCI 驱动程序。
    tar -xzvf vhci-hcd-1.15.tar.gz
    cd vhci-hcd-1.15
    patch -p1 < full-path_to_patch-file
    make clean && make && make install

RHEL/CentOS 7.x

RHEL 8.x

  1. 安装依赖项包。
    yum install gcc-c++
    yum install kernel-devel-$(uname -r)
    yum install kernel-headers-$(uname -r)
    yum install patch
    yum install elfutils-libelf-devel
  2. 编译并安装 VHCI 驱动程序。
    tar -xzvf vhci-hcd-1.15.tar.gz
    cd vhci-hcd-1.15
    patch -p1 < full-path_to_patch-file
    make clean && make && make install
  3. (RHEL 8.x) 要确保 VHCI 驱动程序与 USB 重定向一起正常工作,请为 USB 驱动程序配置签名设置。
    1. 为 USB 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
    2. 对 USB 驱动程序进行签名。
      sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-iocifc.ko
      sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-hcd.ko
    3. 注册用于 UEFI 安全引导的密钥。
      sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    4. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot

SLED/SLES 12.x

SLED/SLES 15.x

  1. 查找当前内核软件包的版本。
    rpm -qa | grep kernel-default-$(echo $(uname -r) | cut -d '-' -f 1,2)

    输出为当前安装的内核软件包的名称。例如,如果软件包名称为 kernel-default-3.0.101-63.1,那么,当前内核软件包的版本为 3.0.101-63.1。

  2. 安装 kernel-develkernel-default-develkernel-macrospatch 软件包。
    zypper install --oldpackage kernel-devel-<kernel-package-version> \
    kernel-default-devel-<kernel-package-version> kernel-macros-<kernel-package-version> patch
    例如:
    zypper install --oldpackage kernel-devel-4.4.21-90.1 kernel-default-devel-4.4.21-90.1 kernel-macros-4.4.21-90.1 patch
  3. 编译并安装 VHCI 驱动程序。
    tar -xzvf vhci-hcd-1.15.tar.gz
    cd vhci-hcd-1.15
    patch -p1 < full-path_to_patch-file
    mkdir -p linux/$(echo $(uname -r) | cut -d '-' -f 1)/drivers/usb/core
    cp /lib/modules/$(uname -r)/source/include/linux/usb/hcd.h linux/$(echo $(uname -r) | cut -d '-' -f 1)/drivers/usb/core
    make clean && make && make install
  4. (SLED/SLES 15.x) 为了确保 VHCI 驱动程序能够与 USB 重定向功能一起正常工作,请为 USB 驱动程序配置签名设置。
    1. 为 USB 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
    2. 查找 USB 驱动程序的签名文件路径。
      find / -name sign-file

      此命令将返回系统上所有签名文件的路径。USB 驱动程序的签名文件路径类似于以下示例。

      /usr/src/linux-5.3.18-24.9-obj/x86_64/default/scripts/
    3. 对 USB 驱动程序进行签名。在以下命令中,<sign-file-path> 是您之前在步骤 4b 中找到的签名文件路径。
      sudo /<sign-file-path>/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-iocifc.ko
      sudo /<sign-file-path>/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-hcd.ko
    4. 注册用于 UEFI 安全引导的密钥。
      # sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    5. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot

此外,请遵循以下准则:

  • 如果您的 Linux 内核更改为新版本,您必须重新编译并重新安装 VHCI 驱动程序,但无需重新安装 Horizon Agent for Linux。
  • 您还可以使用与以下 Ubuntu 系统示例类似的步骤,为 VHCI 驱动程序添加动态内核模块支持 (Dynamic Kernel Module Support, DKMS)。
    1. 安装内核头文件。
      apt install linux-headers-`uname -r`
    2. 使用以下命令安装 dkms
      apt install dkms
    3. 提取和修补 VHCI TAR 文件。
      tar xzvf vhci-hcd-1.15.tar.gz
      cd vhci-hcd-1.15
      patch -p1 <full-path_to_patch-file>
      cd ..
    4. 将提取的 VHCI 源文件复制到 /usr/src 目录。
      cp -r vhci-hcd-1.15 /usr/src/usb-vhci-hcd-1.15
    5. 创建一个名为 dkms.conf 的文件,并将其放在 /usr/src/usb-vhci-hcd-1.15 目录中。
      touch /usr/src/usb-vhci-hcd-1.15/dkms.conf
    6. dkms.conf 文件添加以下内容。
      PACKAGE_NAME="usb-vhci-hcd"
      PACKAGE_VERSION=1.15
      MAKE_CMD_TMPL="make KVERSION=$kernelver"
      
      CLEAN="$MAKE_CMD_TMPL clean"
      
      BUILT_MODULE_NAME[0]="usb-vhci-iocifc"
      DEST_MODULE_LOCATION[0]="/kernel/drivers/usb/host"
      MAKE[0]="$MAKE_CMD_TMPL"
      
      BUILT_MODULE_NAME[1]="usb-vhci-hcd"
      DEST_MODULE_LOCATION[1]="/kernel/drivers/usb/host"
      MAKE[1]="$MAKE_CMD_TMPL"
      
      AUTOINSTALL="YES"
    7. dkms 中添加此 VHCI 驱动程序。
      dkms add usb-vhci-hcd/1.15
    8. 生成 VHCI 驱动程序。
      dkms build usb-vhci-hcd/1.15
    9. 安装 VHCI 驱动程序。
      dkms install usb-vhci-hcd/1.15