配置 Xauthority
Linux VDA 支持使用 X11 显示功能(包括 xterm 和 gvim)的环境,以实现交互式远程处理。此功能提供了一种安全机制,可确保 XClient 和 XServer 之间的安全通信。
-
有两种方法可以确保此安全通信的权限:
- Xhost。默认情况下,Xhost 仅允许本地主机 XClient 与 XServer 通信。如果您选择允许远程 XClient 访问 XServer,则必须运行 Xhost 命令以授予特定计算机上的权限。或者,您可以使用 xhost + 允许任何 XClient 连接到 XServer。
-
Xauthority。
.Xauthority文件位于每个用户的主目录中。它用于在 Cookie 中存储凭据,这些凭据由 xauth 用于 XServer 的身份验证。当 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。对于相同的显示号,显示的 Cookie 在 Xorg 和 XClient 的.Xauthority文件中必须相同。 -
如果 Cookie 相同,请通过使用 Linux VDA 的 IP 地址(例如,10.158.11.11)和已发布的桌面显示号(例如,160)检查远程显示端口的可访问性。
在 XClient 计算机上运行以下命令:
telnet 10.158.11.11 6160 <!--NeedCopy-->端口号是 6000 + <显示号> 的总和。
如果此 telnet 操作失败,防火墙可能正在阻止该请求。