X11-Weiterleitung über SSH und su

X11-Weiterleitung über SSH und su

Ich finde es seltsam, dass bei Verwendung einer SSH-Verbindung mit X11-Weiterleitung ein Benutzer und Root sehen können xclock, ein anderer Benutzer dies jedoch nicht sieht. Warum?

mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$

PS: bedeutet, dass ich das Fenster ^Csehen konnte , also habe ich gedrückt , um zum Terminal zurückzukehren.xclock^C

Antwort1

Für die Verbindung mit einem X11-Display sind zwei Informationen erforderlich: der Displayname (normalerweise in der DISPLAYUmgebungsvariable übergeben) und diePlätzchen, ein Kennwort für die Anzeige, das jede Anwendung beim Verbinden anzeigen muss. Normalerweise wird das Cookie in gespeichert ~/.Xauthority, es kann aber auch in einer anderen Datei gespeichert werden, die durch die XAUTHORITYUmgebungsvariable angegeben wird.

Es scheint, dass der von SSH festgelegte Wert DISPLAYvon durch die beiden Aufrufe von beibehalten wurde su. Das Cookie befindet sich jedoch in ~mahmood/.Xauthority; wenn Sie ein Programm als hmousavi ausführen, sucht das Programm nach einem Cookie in ~hmousavi/.Xauthorityund findet einen anderen Wert.

Im Prinzip könnten Sie ausführen XAUTHORITY=~mahmood/.Xauthority xclock, aber hmousavi hat vermutlich nicht die Berechtigung, diese Datei zu lesen – die .XauthorityDatei sollte für andere Benutzer nicht lesbar sein. Sie können den xauthBefehl zweimal verwenden, einmal als mahmood, um den Cookie-Wert zu extrahieren ( xauth list localhost:10.0) und einmal als hmousavi, um diesen Wert zu importieren ( xauth merge), aber das ist umständlich. Der einfachste Weg, X11-Anwendungen zum Laufen zu bringen, ist, durchgehend SSH zu verwenden, da SSH die X11-Weiterleitung automatisch einrichtet:

mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock

Fügen Sie den öffentlichen SSH-Schlüssel von Mahmood zu dem von Hmousavi hinzu, .ssh/authorized_keysum dies zu ermöglichen.

verwandte Informationen