Angenommen, Sie möchten mit Gewalt eine Verbindung zu X herstellen ...
Nehmen wir an, Sie führen Ihre Befehle bereits auf dem Server aus (auf dem X ausgeführt wird), andernfalls lassen Sie dies zuerst funktionieren und verwenden anschließend 'ssh -X user @ server' vom Client.
Es gibt möglicherweise mehrere Möglichkeiten, die xauth-Befehle auszuführen. Sie verwenden beispielsweise möglicherweise 'sudo', dabei können jedoch Umgebungsvariablen verloren gehen oder geändert werden. Die folgenden Umgebungsvariablen müssen beibehalten werden: DISPLAY und XAUTHORITY. Um zu testen, ob dies der Fall ist, können Sie 'echo $ XAUTHORITY' auf die gleiche Weise wie Ihre Befehle ausführen, aber stellen Sie sicher, dass Sie die Umgebungsvariablen nicht erweitern, bevor Sie diese Befehle ausführen. Versuchen Sie zum Beispiel: sudo bash -c 'echo "$ XAUTHORITY"', um zu sehen, was XAUTHORITY wirklich ist, nachdem Sie Ihr sudo ausgeführt haben (wenn es verschwindet, müssen Sie möglicherweise etwas zu Ihrer sudoers-Datei hinzufügen, siehe an anderer Stelle).
Führen Sie schließlich den folgenden Befehl als den Benutzer auf dem Server aus, mit dem Sie Zugriff erhalten möchten:
xauth info
Dies zeigt die 'Authority-Datei' an, die verwendet wird (/root/.Xauthority standardmäßig für root oder so ähnlich wie /home/theuser/.Xauthority). Wenn die richtige .Xauthority-Datei angezeigt wird, müssen Sie sich keine Gedanken über die Umgebungsvariable XAUTHORITY machen (eigentlich würde ich nicht wissen, wann dies nicht der Fall ist, es sei denn, Sie möchten einen nicht standardmäßigen Speicherort dieser Datei bearbeiten ).
Entfernen Sie diese Datei (falls vorhanden):
rm /root/.Xauthority
Ersetzen Sie /root/.Xauthority
durch die richtige XAUTHORITY-Datei für Ihren Fall.
Erstellen Sie es neu, aber leer (dies wird für viele Befehle benötigt):
touch /root/.Xauthority
Zu diesem Zeitpunkt wird der Fehler " Kein Protokoll angegeben" angezeigt, auch wenn Sie zuvor " Ungültiges MIT-MAGIC-COOKIE-1" erhalten haben. Suchen Sie die Berechtigungsdatei, die der X-Server derzeit verwendet:
ps aux | grep Xorg
Dies sollte ungefähr so aussehen:
root 1153 0.0 1.0 149560 44464 tty7 Ss+ dec02 0:00 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7
Der Dateiname danach -auth
ist der Name, den Sie im nächsten Befehl benötigen. Führen Sie dies als root aus:
sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list
Das listet einen 32-stelligen Hexadezimalschlüssel auf. Die Ausgabe könnte beispielsweise sein:
hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
Verwenden Sie dies, um Ihre .Xauthority-Datei zu generieren (als Benutzer, der sich erneut anmelden muss):
xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
Ersetzen Sie 'c0eaf749aa252101a0f57d5087089db7' durch das, was vom Befehl list für Sie zurückgegeben wurde. Jetzt sollte Ihre .Xauthority 51 Byte groß sein und Sie können (wieder) eine Verbindung zum X-Server herstellen.