配置 Xauthority
Linux VDA 支持使用 X11 显示功能(包括 xterm 和 gvim)的环境,以实现交互式远程处理。此功能提供了一种安全机制,可确保 XClient 和 XServer 之间的安全通信。
-
有两种方法可以确保此安全通信的权限:
- Xhost。默认情况下,Xhost 仅允许本地主机 XClient 与 XServer 通信。如果您选择允许远程 XClient 访问 XServer,则必须运行 Xhost 命令以授予特定计算机上的权限。或者,您也可以使用 xhost + 来允许任何 XClient 连接到 XServer。
-
Xauthority。
.Xauthority文件位于每个用户的主目录中。它用于在 xauth 用于 XServer 身份验证的 Cookie 中存储凭据。当 XServer 实例 (Xorg) 启动时,Cookie 用于对该特定显示的连接进行身份验证。 -
工作原理
Xorg 启动时,会将一个 .Xauthority 文件传递给 Xorg。此 .Xauthority 文件包含以下元素:
- 显示编号
- 远程请求协议
-
Cookie 编号
- 您可以使用
xauth命令浏览此文件。例如:
# xauth -f ~/.Xauthority
# > list
# > us01msip06:107 MIT-MAGIC-COOKIE-1 fb228d1b695729242616c5908f11624b
<!--NeedCopy-->
如果 XClient 远程连接到 Xorg,则必须满足两个先决条件:
- 将 DISPLAY 环境变量设置为远程 XServer。
- 获取包含 Xorg 中某个 Cookie 编号的
.Xauthority文件。
配置 Xauthority
要在 Linux VDA 上为远程 X11 显示启用 Xauthority,您必须创建以下两个注册表项:
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Xorg" -t "REG_DWORD" -v "XauthEnabled" -d "0x00000001" --force
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Xorg" -t "REG_DWORD" -v "ListenTCP" -d "0x00000001" --force
<!--NeedCopy-->
启用 Xauthority 后,通过手动或通过装载共享主目录将 .Xauthority 文件传递给 XClient:
-
手动将
.Xauthority文件传递给 XClient启动 ICA® 会话后,Linux VDA 会为 XClient 生成
.Xauthority文件,并将其存储在登录用户的主目录中。您可以将此.Xauthority文件复制到远程 XClient 计算机,并设置DISPLAY和XAUTHORITY环境变量。DISPLAY是存储在.Xauthority文件中的显示编号,XAUTHORITY是 Xauthority 的文件路径。有关示例,请参阅以下命令:export DISPLAY={Display number stored in the Xauthority file} export XAUTHORITY={the file path of .Xauthority} <!--NeedCopy-->注意:
如果未设置
XAUTHORITY环境变量,则默认使用~/.Xauthority文件。 -
通过装载共享主目录将
.Xauthority文件传递给 XClient便捷的方法是为登录用户装载共享主目录。当 Linux VDA 启动 ICA 会话时,会在登录用户的主目录下创建
.Xauthority文件。如果此主目录与 XClient 共享,则用户无需手动将此.Xauthority文件传输到 XClient。正确设置DISPLAY和XAUTHORITY环境变量后,GUI 将自动显示在 XServer 桌面中。
故障排除
如果 Xauthority 不起作用,请按照以下故障排除步骤操作:
-
作为具有 root 权限的管理员,检索所有 Xorg Cookie:
ps aux | grep -i xorg <!--NeedCopy-->此命令显示 Xorg 进程以及启动时传递给 Xorg 的参数。另一个参数显示使用了哪个
.Xauthority文件。例如:/var/xdl/xauth/.Xauthority110 <!--NeedCopy-->使用 Xauth 命令显示 Cookie:
Xauth -f /var/xdl/xauth/.Xauthority110 <!--NeedCopy--> -
使用
Xauth命令显示~/.Xauthority中包含的 Cookie。对于相同的显示编号,Xorg 和 XClient 的.Xauthority文件中显示的 Cookie 必须相同。 -
如果 Cookie 相同,请使用 Linux VDA 的 IP 地址(例如,10.158.11.11)和已发布的桌面显示编号(例如,160)检查远程显示端口的可访问性。
在 XClient 计算机上运行以下命令:
telnet 10.158.11.11 6160 <!--NeedCopy-->端口号是 6000 + <显示编号> 的总和。
如果此 telnet 操作失败,则防火墙可能正在阻止该请求。