Linux Virtual Delivery Agent

配置联合身份验证服务

Linux VDA 支持使用 FAS 登录您的 Citrix Virtual Apps and Desktops 环境。它使用与 Windows VDA 相同的 Windows 环境来执行 FAS 登录功能。有关为 FAS 配置 Windows 环境的信息,请参阅联合身份验证服务。本文提供了特定于 Linux VDA 的额外信息。

注意

Linux VDA 不支持会话中行为策略。

在 Linux VDA 上配置 FAS

RHEL 8/CentOS 8 对 FAS 的支持

FAS 依赖于 pam_krb5 模块,该模块在 RHEL 8/CentOS 8 上已弃用。要在 RHEL 8/CentOS 8 上使用 FAS,请按如下所示构建 pam_krb5 模块:

  1. 从以下 Web 站点下载 pam_krb5-2.4.8-6 源代码。

    https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html

  2. 在 RHEL 8/CentOS 8 上构建并安装 pam_krb5 模块。

    yum install make gcc krb5-devel pam-devel autoconf libtool
    rpm2cpio pam_krb5-2.4.8-6.el7.src.rpm | cpio –div
    tar xvzf pam_krb5-2.4.8.tar.gz
    cd pam_krb5-2.4.8
    ./configure --prefix=/usr
    make
    make install
    
  3. 验证 pam_krb5.so 是否存在于 /usr/lib64/security/ 下。

    ls -l /usr/lib64/security | grep pam_krb5
    

设置 FAS 服务器

如果是全新安装 Linux VDA,要使用 FAS,请在执行 ctxinstall.sh 或 ctxsetup.sh 过程中看到要求提供 CTX_XDL_FAS_LIST 时,键入每个 FAS 服务器的 FQDN。由于 Linux VDA 不支持 AD 组策略,您可以改为提供以分号分隔的 FAS 服务器的列表。如果删除了任何服务器地址,请使用 <none> 文本字符串填充其空白,并且不要修改服务器地址的顺序。

如果是升级现有的 Linux VDA 安装,可以重新运行 ctxsetup.sh 来设置 FAS 服务器。或者,也可以运行以下命令来设置 FAS 服务器,并重新启动 ctxvda 服务以使设置生效。

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "<Your-FAS-Server-List>" --force

service ctxjproxy restart

service ctxvda restart

要通过 ctxreg 更新 FAS 服务器,请运行以下命令:

sudo /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -v "Addresses" -d "<Your-FAS-Server-List>"

service ctxjproxy restart

service ctxvda restart

安装证书

要验证用户的证书,请在 VDA 上安装根 CA 证书以及所有中间证书。例如,要安装根 CA 证书,请从前面的从 Microsoft CA 中获取 CA 证书(在 AD 中)步骤中获取 AD 根证书,也可以从根 CA 服务器 http://CA-SERVER/certsrv 下载 DER 格式的该证书。

注意:

以下命令也适用于配置中间证书。

运行类似如下的命令将 DER 文件(.crt、.cer、.der)转换为 PEM:

sudo openssl x509 -inform der -in root.cer -out root.pem

然后,运行类似如下的命令将根 CA 证书安装到 openssl 目录:

sudo cp root.pem /etc/pki/CA/certs/

注意:

请勿将根 CA 证书置于 /root 路径下。否则,FAS 无权读取根 CA 证书。

运行 ctxfascfg.sh

运行 ctxfascfg.sh 脚本以配置 FAS 参数:

sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh

添加两个环境变量,以便 ctxfascfg.sh 可以在静默模式下运行:

  • CTX_FAS_ADINTEGRATIONWAY=winbind | sssd | centrify – 表示 Active Directory 集成方法,相当于在指定 CTX_EASYINSTALL_ADINTEGRATIONWAY 时使用 CTX_EASYINSTALL_ADINTEGRATIONWAY 。如果未指定CTX_EASYINSTALL_ADINTEGRATIONWAYCTX_FAS_ADINTEGRATIONWAY 将使用自己的值设置。

  • CTX_FAS_CERT_PATH =<certificate path> - 指定存储根证书和所有中间证书的完整路径。

选择正确的 Active Directory 集成方法,然后键入正确的证书路径(例如 /etc/pki/CA/certs/)。

脚本随后安装 krb5-pkinit 和 pam_krb5 软件包,并设置相关的配置文件。

限制

  • FAS 支持有限的 Linux 平台和 AD 集成方法。请参阅以下列表:

      Winbind SSSD Centrify
    RHEL 8.3
    RHEL 8.2
    RHEL 8.1
    RHEL 7.9
    RHEL 7.8
    Ubuntu 20.04
    Ubuntu 18.04
    Ubuntu 16.04
    SLES 12.5
  • FAS 尚不支持锁屏界面。如果在会话中单击锁定按钮,则无法使用 FAS 重新登录该会话。
  • 此版本仅支持联合身份验证服务体系结构概述一文中概括的通用 FAS 部署,不包括 Windows 10 Azure AD 联接

故障排除

在对 FAS 进行故障排除之前,请确保已安装并正确配置 Linux VDA,以便可以使用密码身份验证在常用应用商店中成功启动非 FAS 会话。

如果非 FAS 会话正常运行,请将登录类别的 HDX 日志级别设置为“VERBOSE”,将 VDA 日志级别设置为“TRACE”。有关如何为 Linux VDA 启用跟踪日志记录的信息,请参阅知识中心文章 CTX220130

FAS 服务器配置错误

从 FAS 应用商店启动会话失败。

检查 /var/log/xdl/hdx.log 并查找类似如下内容的错误日志:

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: [Logon Type] Federated Authentication Logon.

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: entry

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas: start connect to server 0

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas0: failed to connect: Connection refused.

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: failed to connect to server [0], please confirm if fas service list is well configurated in condb

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: exit, 43

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: failed to validate fas credential

2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: LoginBoxValidate: failed validation of user 'user1@CTXDEV.LOCAL', INVALID_PARAMETER

解决方案

运行以下命令以确认 Citrix 注册表值“HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService”是否设置为 <Your-FAS-Server-List>。

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"

如果现有设置不正确,请按照前面的设置 FAS 服务器步骤操作以重新设置。

CA 证书配置错误

从 FAS 应用商店启动会话失败。将显示一个灰色窗口,并且几秒钟后消失。

因根 CA 证书配置错误而使登录无效

检查 /var/log/xdl/hdx.log 并查找类似如下内容的错误日志:

2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_logon_certificate: entry

2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: check_caller: current process: pid [30656], name [/opt/Citrix/VDA/bin/ctxlogin]

2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_public_certificate: entry

2021-01-28 01:47:46.211 <P30656:S5> citrix-ctxlogin: query_fas: waiting for response...

2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: query_fas: query to server success

2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: get_public_certificate: exit

2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: fas_base64_decode: input size 1888

2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: fas_base64_decode: output size 1415

2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: get logon certificate success

2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: cache_certificate: cache certificate success

2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: exit, 0

2021-01-28 01:47:48.060 <P30656:S5> citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user user1@CTXDEV.LOCAL

解决方案

验证是否在 /etc/krb5.CONFs 中正确设置了存储根 CA 证书和所有中间证书的完整路径。完整路径如下所示:


 [realms]

EXAMPLE.COM = {

    ......

    pkinit_anchors = DIR:/etc/pki/CA/certs/

    ......

}  

如果现有设置不正确,请按照前面的安装证书步骤操作以重新设置。

或者,检查根 CA 证书是否有效。

重影帐户映射错误

FAS 配置了 SAML 身份验证。ADFS 用户在 ADFS 登录页面上输入用户名和密码后,可能会出现以下错误。

重影帐户映射错误的示意图

此错误表明已成功验证 ADFS 用户,但在 AD 上没有配置任何重影用户。

解决方案

在 AD 上设置重影帐户。

未配置 ADFS

尝试登录 FAS 应用商店过程中出现以下错误:

未配置 ADFS

当 FAS 应用商店配置为使用 SAML 身份验证,但缺少 ADFS 部署时,会出现此问题。

解决方案

为联合身份验证服务部署 ADFS IdP。有关详细信息,请参阅联合身份验证服务 ADFS 部署

相关信息

已知问题

如果正在使用 FAS,则尝试启动包含非英语字符的已发布桌面或应用程序会话时,可能会失败。

启动包含非英语字符的会话失败

解决方法

在 CA 工具中右键单击 Manage Templates(管理模板)以将 Citrix_SmartcardLogon 模板从 Build from this Active Directory information(基于此 Active Directory 信息构建)更改为 Supply in the request(在请求中提供):

请求选项中的供应

配置联合身份验证服务