Linux Virtual Delivery Agent

Xauthority

Der Linux VDA unterstützt Umgebungen, die X11-Anzeigefunktionen (einschließlich xterm und gvim) für interaktives Remoting verwenden. Diese Funktion bietet einen Sicherheitsmechanismus, der für die sichere Kommunikation zwischen XClient und XServer erforderlich ist.

  • Es gibt zwei Methoden, um die Berechtigung für diese sichere Kommunikation zu gewährleisten:

  • Xhost. Standardmäßig erlaubt Xhost nur dem localhost XClient, mit dem XServer zu kommunizieren. Wenn Sie einem Remote-XClient den Zugriff auf den XServer erlauben möchten, muss der Xhost-Befehl ausgeführt werden, um die Berechtigung auf der spezifischen Maschine zu erteilen. Alternativ können Sie auch xhost + verwenden, um jedem XClient die Verbindung zum XServer zu ermöglichen.
  • Xauthority. Die Datei .Xauthority befindet sich im Home-Verzeichnis jedes Benutzers. Sie wird verwendet, um Anmeldeinformationen in Cookies zu speichern, die von xauth zur Authentifizierung des XServers verwendet werden. Wenn eine XServer-Instanz (Xorg) gestartet wird, wird das Cookie verwendet, um Verbindungen zu dieser spezifischen Anzeige zu authentifizieren.

  • Funktionsweise

Wenn Xorg startet, wird eine .Xauthority-Datei an Xorg übergeben. Diese .Xauthority-Datei enthält die folgenden Elemente:

  • Anzeigenummer
  • Remote-Anforderungsprotokoll
  • Cookienummer

  • Sie können diese Datei mit dem Befehl xauth durchsuchen. Zum Beispiel:
# xauth -f ~/.Xauthority

# > list

# > us01msip06:107  MIT-MAGIC-COOKIE-1  fb228d1b695729242616c5908f11624b
<!--NeedCopy-->

Wenn XClient sich remote mit dem Xorg verbindet, müssen zwei Voraussetzungen erfüllt sein:

  • Setzen Sie die Umgebungsvariable DISPLAY auf den Remote-XServer.
  • Besorgen Sie sich die .Xauthority-Datei, die eine der Cookienummern in Xorg enthält.

Xauthority konfigurieren

Um Xauthority auf dem Linux VDA für die Remote-X11-Anzeige zu aktivieren, müssen Sie die folgenden zwei Registrierungsschlüssel erstellen:

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-->

Nach der Aktivierung von Xauthority übergeben Sie die .Xauthority-Datei manuell an den XClient oder durch das Mounten eines freigegebenen Home-Verzeichnisses:

  • Die .Xauthority-Datei manuell an den XClient übergeben

    Nach dem Start einer ICA®-Sitzung generiert der Linux VDA die .Xauthority-Datei für den XClient und speichert die Datei im Home-Verzeichnis des angemeldeten Benutzers. Sie können diese .Xauthority-Datei auf die Remote-XClient-Maschine kopieren und die Umgebungsvariablen DISPLAY und XAUTHORITY setzen. DISPLAY ist die in der .Xauthority-Datei gespeicherte Anzeigenummer und XAUTHORITY ist der Dateipfad von Xauthority. Ein Beispiel finden Sie im folgenden Befehl:

     export DISPLAY={Display number stored in the Xauthority file}
    
     export XAUTHORITY={the file path of .Xauthority}
     <!--NeedCopy-->
    

    Hinweis:

    Wenn die Umgebungsvariable XAUTHORITY nicht gesetzt ist, wird standardmäßig die Datei ~/.Xauthority verwendet.

  • Die .Xauthority-Datei an den XClient übergeben, indem ein freigegebenes Home-Verzeichnis gemountet wird

    Der bequemste Weg ist, ein freigegebenes Home-Verzeichnis für den angemeldeten Benutzer zu mounten. Wenn der Linux VDA eine ICA-Sitzung startet, wird die .Xauthority-Datei im Home-Verzeichnis des angemeldeten Benutzers erstellt. Wenn dieses Home-Verzeichnis mit dem XClient geteilt wird, muss der Benutzer diese .Xauthority-Datei nicht manuell an den XClient übertragen. Nachdem die Umgebungsvariablen DISPLAY und XAUTHORITY korrekt gesetzt wurden, wird die GUI automatisch auf dem XServer-Desktop angezeigt.

Fehlerbehebung

Wenn Xauthority nicht funktioniert, befolgen Sie die Schritte zur Fehlerbehebung:

  1. Rufen Sie als Administrator mit Root-Rechten alle Xorg-Cookies ab:

    ps aux | grep -i xorg
    <!--NeedCopy-->
    

    Dieser Befehl zeigt den Xorg-Prozess und die Parameter an, die beim Starten an Xorg übergeben wurden. Ein weiterer Parameter zeigt an, welche .Xauthority-Datei verwendet wird. Zum Beispiel:

    /var/xdl/xauth/.Xauthority110
    <!--NeedCopy-->
    

    Zeigen Sie die Cookies mit dem Befehl Xauth an:

    Xauth -f /var/xdl/xauth/.Xauthority110
    <!--NeedCopy-->
    
  2. Verwenden Sie den Befehl Xauth, um die in ~/.Xauthority enthaltenen Cookies anzuzeigen. Für dieselbe Anzeigenummer müssen die angezeigten Cookies in den .Xauthority-Dateien von Xorg und XClient identisch sein.

  3. Wenn die Cookies identisch sind, überprüfen Sie die Erreichbarkeit des Remote-Anzeigeports mithilfe der IP-Adresse des Linux VDA und der Anzeigenummer des veröffentlichten Desktops.

    Führen Sie beispielsweise den folgenden Befehl auf der XClient-Maschine aus:

    telnet 10.158.11.11 6160
    <!--NeedCopy-->
    

    Die Portnummer ist die Summe von 6000 + <Anzeigenummer>.

    Wenn dieser Telnet-Vorgang fehlschlägt, blockiert möglicherweise die Firewall die Anforderung.

Xauthority