会话监视
会话监视允许域管理员在内网中查看用户的 ICA® 会话。此功能使用 noVNC 连接到 ICA 会话。
注意:
要使用此功能,请使用
Citrix Director7.16 或更高版本。
安装和配置
依赖项
会话监视需要两个新的依赖项:python-websockify 和 x11vnc。安装 Linux VDA 后,请手动安装 python-websockify 和 x11vnc。
对于 RHEL 7.x 和 Amazon Linux2:
运行以下命令以安装 python-websockify 和 x11vnc(x11vnc 版本 0.9.13 或更高版本):
sudo pip3 install websockify
- sudo yum install x11vnc
<!--NeedCopy-->
要解决 python-websockify 和 x11vnc 的依赖关系,请在 RHEL 7.x 上启用 Extra Packages for Enterprise Linux (EPEL) 和可选 RPM 存储库:
-
EPEL
x11vnc需要 EPEL 存储库。运行以下命令以启用 EPEL 存储库:yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm <!--NeedCopy--> -
可选 RPM
运行以下命令以启用可选
RPM存储库,用于安装x11vnc的某些依赖包:subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-7-server-extras-rpms <!--NeedCopy-->
对于 RHEL 8.x:
运行以下命令以安装 python-websockify 和 x11vnc(x11vnc 版本 0.9.13 或更高版本)。
sudo pip3 install websockify
sudo yum install x11vnc
<!--NeedCopy-->
要解决 x11vnc 的依赖关系,请启用 EPEL 和 CodeReady Linux Builder 存储库:
dnf install -y --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
subscription-manager repos --enable "codeready-builder -for-rhel-8-x86_64-rpms"
<!--NeedCopy-->
对于 Ubuntu:
运行以下命令以安装 python-websockify 和 x11vnc(x11vnc 版本 0.9.13 或更高版本):
sudo pip3 install websockify
sudo apt-get install x11vnc
<!--NeedCopy-->
对于 SUSE:
运行以下命令以安装 python-websockify 和 x11vnc(x11vnc 版本 0.9.13 或更高版本):
- sudo pip3 install websockify
- sudo zypper install x11vnc
<!--NeedCopy-->
- 对于 Debian:
运行以下命令以安装 python-websockify 和 x11vnc(x11vnc 版本 0.9.13 或更高版本):
sudo pip3 install websockify
sudo apt-get install x11vnc
<!--NeedCopy-->
端口
会话监视功能会自动从 6001-6099 范围内的可用端口中选择端口,以建立从 Linux VDA 到 Citrix Director 的连接。因此,您可以同时监视的 ICA 会话数量限制为 99 个。请确保有足够的端口可用以满足您的要求,特别是对于多会话监视。
注册表
-
下表列出了相关的注册表项:
-
注册表项 描述 默认值 - | —————– | – | – |
-
EnableSessionShadowing 启用或禁用会话监视功能 1 (已启用) -
ShadowingUseSSL 确定是否加密 Linux VDA 与 Citrix Director 之间的连接 0 (已禁用)
在 Linux VDA 上运行 ctxreg 命令以更改注册表值。例如,要禁用会话监视,请运行以下命令:
/opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent" -v "EnableSessionShadowing" -d 0x00000000
SSL
Linux VDA 与 Citrix Director 之间的 noVNC 连接使用 WebSocket 协议。对于会话监视,选择 ws:// 还是 wss:// 取决于前面提到的 “ShadowingUseSSL” 注册表项。默认情况下,选择 ws://。但是,出于安全原因,我们建议您使用 wss:// 并在每个 Citrix Director 客户端和每个 Linux VDA 服务器上安装证书。Citrix 不对使用 ws:// 进行 Linux VDA 会话监视的任何安全问题承担责任。
获取服务器和根 SSL 证书
证书必须由受信任的证书颁发机构 (CA) 签名。
对于要配置 SSL 的每个 Linux VDA 服务器,都需要一个单独的服务器证书(包括密钥)。服务器证书标识一台特定的计算机,因此您必须知道每个服务器的完全限定域名 (FQDN)。您可以改为使用整个域的通配符证书。在这种情况下,您至少需要知道域名。
与 Linux VDA 通信的每个 Citrix Director 客户端也需要根证书。根证书可从颁发服务器证书的同一 CA 获取。
您可以从以下 CA 安装服务器和客户端证书:
- 操作系统附带的 CA
- 企业 CA(您的组织提供给您的 CA)
- 非操作系统附带的 CA
请咨询您组织的安全团队,了解他们获取证书所需的方法。
重要提示:
- 服务器证书的通用名称必须是 Linux VDA 的精确 FQDN,或者至少是正确的通配符加域名字符。例如,vda1.basedomain.com 或 *.basedomain.com。
- 包括 SHA1 和 MD5 在内的哈希算法对于某些浏览器支持的数字证书签名来说太弱。因此,SHA-256 被指定为最低标准。
在每个 Citrix Director 客户端上安装根证书
会话监视使用与 IIS 相同的基于注册表的证书存储,因此您可以使用 IIS 或 Microsoft 管理控制台 (MMC) 证书管理单元安装根证书。当您从 CA 收到证书时,可以重新启动 IIS 中的 Web 服务器证书向导,该向导将安装证书。或者,您可以使用 MMC 在计算机上查看和导入证书,并将证书添加为独立管理单元。Internet Explorer 和 Google Chrome 默认导入操作系统上安装的证书。对于 Mozilla Firefox,您必须在证书管理器 (Certificate Manager) 的颁发机构选项卡上导入您的根 SSL 证书。
在每个 Linux VDA 服务器上安装服务器证书及其密钥
将服务器证书命名为 “shadowingcert.*“,将密钥文件命名为 “shadowingkey.*“(* 表示格式,例如 shadowingcert.pem 和 shadowingkey.key)。将服务器证书和密钥文件放置在路径 /etc/xdl/shadowingssl 下,并使用受限权限对其进行适当保护。不正确的名称或路径会导致 Linux VDA 无法找到特定的证书或密钥文件,从而导致与 Citrix Director 的连接失败。
使用方法
在 Citrix Director 中,找到目标会话,然后在会话详细信息视图中单击监视以向 Linux VDA 发送监视请求。

连接初始化后,ICA 会话客户端(而非 Citrix Director 客户端)上会显示一个确认,请求用户允许监视会话。

如果用户单击是,Citrix Director 侧将出现一个窗口,指示 ICA 会话正在被监视。
有关使用方法的更多信息,请参阅 Citrix Director 文档。
限制
- 会话监视仅设计用于内网。即使通过 Citrix Gateway 连接,它也无法用于外部网络。Citrix 不对外部网络中 Linux VDA 会话监视的任何问题承担责任。
- 启用会话监视后,域管理员只能查看 ICA 会话,但无权写入或控制它。
- 管理员从
Citrix Director中单击监视后,会显示一个确认,请求用户允许监视会话。只有当会话用户授予权限后,才能监视会话。 -
前面提到的确认具有 20 秒的超时限制。超时后,监视请求将失败。
- 一个会话只能由一个管理员进行会话投影。例如,如果管理员 B 对管理员 A 正在投影的会话发送会话投影请求,则获取用户权限的确认将重新出现在用户设备上。如果用户同意,则管理员 A 的会话投影连接将停止,并为管理员 B 建立新的会话投影连接。如果管理员对同一会话发送另一个会话投影请求,也可以建立新的会话投影连接。
- 要使用会话投影,请安装
Citrix Director7.16 或更高版本。 -
Citrix Director客户端使用 FQDN 而不是 IP 地址连接到目标 Linux VDA 服务器。因此,Citrix Director客户端必须能够解析 Linux VDA 服务器的 FQDN。
故障排除
如果会话投影失败,请在 Citrix Director 客户端和 Linux VDA 上进行调试。
在 Citrix Director 客户端上
通过浏览器的开发人员工具,检查 Console(控制台)选项卡上的输出日志。或者,检查 Network(网络)选项卡上 ShadowLinuxSession API 的响应。如果获取用户权限的确认出现但连接建立失败,请手动 ping VDA 的 FQDN,以验证 Citrix Director 是否可以解析 FQDN。如果 wss:// 连接存在问题,请检查您的证书。
在 Linux VDA 上
验证获取用户权限的确认是否在会话投影请求后出现。如果没有,请检查 vda.log 和 hdx.log 文件以查找线索。要获取 vda.log 文件,请执行以下操作:
-
找到 /etc/xdl/ctx-vda.conf 文件。取消注释以下行以启用 vda.log 配置:
Log4jConfig="/etc/xdl/log4j.xml" -
打开 /etc/xdl/log4j.xml,找到 com.citrix.dmc 部分,并将 “info” 更改为 “trace”,如下所示:
<!-- Broker Agent Plugin - Director VDA plugin Logger --> <logger name="com.citrix.dmc"> <level value="trace"/> </logger> <!--NeedCopy--> -
运行
service ctxvda restart命令以重新启动ctxvda服务。
如果连接建立过程中出现错误:
- 检查是否存在任何防火墙限制,阻止会话投影打开端口。
- 验证您是否正确命名了证书和密钥文件,并在 SSL 场景下将其放置在正确的路径下。
- 验证 6001-6099 之间是否还有足够的端口可用于新的会话投影请求。