要安装 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.2、7.3、7.4、7.5、7.6、7.7、7.8、7.9、8.0、8.1、8.2 和 8.3 x64
Red Hat Enterprise Linux (RHEL) Server 7.8、7.9、8.2 和 8.3 x64
CentOS 7.2、7.3、7.4、7.5、7.6、7.7、7.8、7.9、8.0、8.1、8.2 和 8.3 x64
SUSE Linux Enterprise Desktop (SLED) 12 SP3、15 SP1 和 15 SP2 x64
SUSE Linux Enterprise Server (SLES) 12 SP3、12 SP5、15 SP1 和 15 SP2 x64
注: Horizon Agent 在某些 Linux 分发包中具有依赖项包。有关详细信息,请参阅 安装 Horizon Agent 的依赖项包

所需的平台和软件版本

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

表 2. 所需的平台和 VMware Horizon 软件版本
平台和软件 支持的版本
vSphere 平台版本
  • vSphere 6.0 U2 或更高版本
  • vSphere 6.5 U1 或更高版本
  • vSphere 6.7 或更高版本
Horizon 环境
  • Horizon Connection Server 2103
Horizon Client 软件
  • 适用于 Android 的 Horizon Client 2103
  • 适用于 Windows 的 Horizon Client 2103
  • 适用于 Linux 的 Horizon Client 2103
  • 适用于 Mac 的 Horizon Client 2103
  • 适用于 iOS 的 Horizon Client 2103
  • Chrome 和 Firefox 上的 HTML Access 2103
  • 支持 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/CentOS 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/CentOS 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 驱动程序

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

  1. https://sourceforge.net/projects/usb-vhci/files/linux%20kernel%20module/ 下载 USB VHCI 源代码。
  2. 要编译 VHCI 驱动程序源代码并在 Linux 系统上安装生成的二进制文件,请使用下表中列出的命令。
    例如,如果在 /install_tmp/ 目录下解压缩安装文件 VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxx.tar.gz,那么 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
注: VHCI 驱动程序的安装必须在安装 Horizon 8 for Linux 之前完成。
表 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/CentOS 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/CentOS 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 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