Linux Virtual Delivery Agent

联邦身份验证服务

您可以使用联邦身份验证服务 (FAS) 来验证登录到 Linux VDA 的用户。Linux VDA 使用与 Windows VDA 相同的 Windows 环境来实现 FAS 登录功能。有关配置 FAS Windows 环境的信息,请参阅联邦身份验证服务。本文提供了特定于 Linux VDA 的额外信息。

注意:

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

  • Linux VDA 使用短连接与 FAS 服务器传输数据。

支持的发行版

FAS 支持有限的 Linux 发行版和域加入方法。请参阅以下矩阵:

  Winbind SSSD Centrify PBIS Quest
Debian 12.12 Yes Yes Yes Yes Yes
Debian 13 Yes Yes Yes Yes No
RHEL 10/9.7/9.6/9.4 Yes Yes Yes No Yes
RHEL 8.10 Yes Yes Yes Yes Yes
Rocky Linux 10/9.7/9.6/9.4 Yes Yes Yes No Yes
Rocky Linux 8.10 Yes Yes Yes No Yes
SUSE 15.7 Yes Yes Yes No Yes
Ubuntu 24.04 Yes Yes Yes No Yes
Ubuntu 22.04 Yes Yes Yes Yes Yes

注意:

  1. 如果域加入方法是 Quest,则 krb5.conf 可能不存在。在这种情况下,请首先手动安装 krb5-pkinitlibpam-krb5(这将提示输入 Kerberos 信息并写入 krb5.conf),然后执行 FAS 脚本 /opt/Citrix/VDA/sbin/ctxfascfg.sh

  2. 对于 rhel9 和 rocky9,客户需要启用 AD-SUPPORT 加密策略(如果 AD 在 Kerberos 身份验证期间使用 SHA1,则可能还需要 SHA1)。命令如下:

    update-crypto-policies --set DEFAULT:AD-SUPPORT

    update-crypto-policies --set DEFAULT:AD-SUPPORT:SHA1

  3. 对于 Debian 11,用户可能需要手动将摘要方法配置为 SHA256。命令如下: /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "DigestMethod" -d "SHA256" --force

在 Linux VDA 上配置 FAS

安装证书

为了验证用户证书,请在 VDA 上安装根 CA 证书和所有中间证书。例如,要安装根 CA 证书,请从前面的从 Microsoft CA(在 AD 上)检索 CA 证书步骤中获取 AD 根证书,或从根 CA 服务器 http://CA-SERVER/certsrv 下载。

注意:

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

例如,要将 DER 文件(.crt、.cer、.der)转换为 PEM,请运行类似于以下内容的命令:

sudo openssl x509 -inform der -in root.cer -out root.pem
<!--NeedCopy-->

然后,通过运行类似于以下内容的命令,将根 CA 证书安装到 openssl 目录:

-  sudo cp root.pem /etc/pki/CA/certs/
<!--NeedCopy-->

注意:

请勿将根 CA 证书放在 /root 路径下。否则,FAS 将没有根 CA 证书的读取权限。

运行 ctxfascfg.sh

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

sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh
<!--NeedCopy-->

您可以在静默模式下运行 ctxfascfg.sh。在静默模式下运行脚本之前,请设置以下环境变量:

  • **CTX_FAS_ADINTEGRATIONWAY=winbind sssd centrify pbis quest**:表示 Active Directory 集成方法,当指定 CTX_EASYINSTALL_ADINTEGRATIONWAY 时,该方法等于 CTX_EASYINSTALL_ADINTEGRATIONWAY。如果未指定 CTX_EASYINSTALL_ADINTEGRATIONWAY,则 CTX_FAS_ADINTEGRATIONWAY 使用其自己的值设置。
  • CTX_FAS_CERT_PATH =<certificate path>:指定存储根证书和所有中间证书的完整路径。

  • CTX_FAS_KDC_HOSTNAME:指定选择 PBIS 和 Quest 时密钥分发中心 (KDC) 的主机名。

  • CTX_FAS_PKINIT_KDC_HOSTNAME:指定 PKINIT KDC 主机名,除非另有指定,否则该主机名等于 CTX_FAS_KDC_HOSTNAME。如果您有多个 Delivery Controller,请将域中所有 KDC 的主机名添加到 /etc/krb5.conf 文件中的 pkinit_kdc_hostname。有关详细信息,请参阅知识中心文章 CTX322129

  • CTX_FAS_SERVER_LIST=’list-fas-servers’:联邦身份验证服务 (FAS) 服务器通过 AD 组策略进行配置。有关域 GPO 上的 FAS 策略设置的信息,请参阅配置组策略。Linux VDA 不支持 AD 组策略,但您可以提供以分号分隔的 FAS 服务器列表。序列必须与 AD 组策略中配置的序列相同。如果删除了任何服务器地址,请用文本字符串 ’<none>‘ 填充其空白,并且不要修改服务器地址的顺序。为了与 FAS 服务器正确通信,请确保附加的端口号与 FAS 服务器上指定的端口号一致,例如,CTX_XDL_FAS_LIST='fas_server_1_url:port_number; fas_server_2_url: port_number; fas_server_3_url: port_number'

要升级现有的 Linux VDA 安装,您可以运行以下命令来设置 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

systemctl restart ctxjproxy

-  systemctl restart ctxvda

<!--NeedCopy--> ```

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

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

systemctl restart ctxjproxy

systemctl restart ctxvda
<!--NeedCopy--> ```

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

然后,该脚本会安装 krb5-pkinitpam_krb5 软件包并设置相关的配置文件。对于 RHEL 8 及更高版本,由于 PAM_KRB5 已移至 EPEL 存储库,因此该脚本会尝试在这些发行版中启用 EPEL。

禁用 FAS

要在 Linux VDA 上禁用 FAS,请使用以下命令从 ConfDB 中删除所有 FAS 服务器:

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "" --force

systemctl restart ctxjproxy

systemctl restart ctxvda
<!--NeedCopy-->

为 FAS SSO 故障启用辅助身份验证

Linux VDA 通过提供辅助身份验证方法来增强登录弹性,尤其是在 FAS 单点登录 (SSO) 失败时。借助此功能,如果 FAS SSO 遇到问题,系统会提示用户手动输入其凭据以进行密码身份验证。要启用此功能,请运行以下命令:

create -k "HKLM\System\CurrentControlSet\Control\Citrix\AccessControl\Login\Global" -t "REG_DWORD" -v "SecondaryAuthEnabled" -d "0x00000001" --force
<!--NeedCopy-->

限制

  • FAS 尚不支持锁定屏幕。如果您在会话中单击锁定按钮,则无法使用 FAS 再次登录到该会话。
  • 此版本仅支持 联邦身份验证服务体系结构概述 文章中总结的常见 FAS 部署,不包括 Windows 10 Azure AD Join

故障排除

在对 FAS 进行故障排除之前,请确保:

  • Linux VDA 已正确安装和配置。
  • 可以使用密码身份验证在通用应用商店上成功启动非 FAS 会话。

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

您还可以使用 Linux XDPing 工具来检查 Linux VDA 环境中可能存在的常见配置问题。

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

<!--NeedCopy-->

解决方案

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

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"
<!--NeedCopy-->

如果现有设置不正确,请按照前面的 设置 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
<!--NeedCopy-->

解决方案

验证您是否已在 /etc/krb5.conf 中正确设置了存储根 CA 证书和所有中间证书的完整路径。完整路径类似于以下内容:


 [realms]

EXAMPLE.COM = {

    ......

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

    ......

}  
<!--NeedCopy-->

如果现有设置不正确,请按照前面的 安装证书 步骤再次进行设置。

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

影子帐户映射错误

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

影子帐户映射错误

该错误表明:

  • ADFS 用户已成功验证,但 AD 上未配置影子用户。

解决方案

在 AD 上设置影子帐户。

未配置 ADFS

在尝试登录 FAS 存储时,出现以下错误:

未配置 ADFS

当您将 FAS 存储配置为使用 SAML 身份验证但 ADFS 部署缺失时,会出现此问题。

解决方案

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

相关信息

已知问题

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

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

解决方法

在 CA 工具中右键单击 管理模板,将 Citrix_SmartcardLogon 模板从 根据此 Active Directory 信息生成 更改为 在请求中提供

在请求中提供选项