Kann man nach `ssh` ohne` -X` an einer Maschine `$ DISPLAY` ändern, damit es wie` ssh -X` funktioniert?
22
Nach dem sshohne -Xeine Maschine ist es möglich , einige Einstellungen zu ändern (zum Beispiel $DISPLAY) , um es wie funktioniert ssh -X? Wenn nicht, woran liegt das? Vielen Dank.
Ich würde vorschlagen, den Fragentitel durch Weglassen zu verkürzen change $DISPLAY to. Der aktuelle Fragentitel kann in den Suchergebnissen nicht vollständig angezeigt werden, und das Ändern von $ DISPLAY ist wirklich Teil der Antwort, nicht Teil der Frage.
Dmitry Grigoryev
Antworten:
33
Sie können eine zweite Verbindung mit aktivierter X11-Weiterleitung erstellen und anschließend die DISPLAYUmgebungsvariable aus der zweiten Verbindung in der ersten verwenden.
Im 1. Fenster:
$ ssh user@host
user@host$ ...
Im 2. Fenster:
$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0
Tut leider sshnichts, um die X11 (oder andere) Weiterleitungen an den Prozess / die Sitzung, den / die sie gestartet hat, oder an den Benutzer, den / die sie auf der Remote-Maschine ausführt, zu enthalten (z. B. indem Unix-Sockets verwendet werden, ohne Anmeldeinformationen zu überprüfen oder Namespaces zu verwenden). und diese Weiterleitungen sind einfache TCP-Listening-Sockets, mit denen sich jeder auf der Remote-Maschine verbinden kann; Die gesamte Sicherheit der X11-Weiterleitung hängt von der X11-Authentifizierung ab.
X11-Weiterleitung von Hand
In der sshd_config(5)Manpage wird Folgendes erwähnt:
Das Deaktivieren der X11-Weiterleitung hindert Benutzer nicht daran, X11-Datenverkehr weiterzuleiten, da Benutzer jederzeit ihre eigenen Weiterleitungen installieren können.
So können Sie das von Hand machen.
Stellen Sie zunächst sicher, dass alle host- oder benutzerbasierten Zugriffssteuerungen deaktiviert sind, die den x11-Authentifizierungsmechanismus umgehen [1]:
$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect
Zeigen Sie dann die Authentifizierungsinformationen für DISPLAY=:0auf dem lokalen Computer an:
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
Stellen Sie ohne X11-Weiterleitung eine Verbindung zum Remote-Computer her:
$DISPLAYStellen Sie die Umgebungsvariable ein und fügen Sie die Authentifizierungsinformationen von der lokalen zur entfernten Maschine hinzu:
hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth: file /home/user/.Xauthority does not exist
Jetzt können Sie loslegen:
hzy64$ xterm
[1] Wegen eines fehlgeleiteten Bugfixes ist die benutzerbasierte Zugriffskontrolle in Debian standardmäßig über aktiviert /etc/X11/Xsession.d/35x11-common_xhost-local. Schlimmer noch, es ist das einzige, das standardmäßig in XWayland verfügbar ist und auch nicht deaktiviert werden kann . Jedes Programm, das Proxys des X11-Protokolls (z. B. xscope) ausführt, muss seine eigene x11-Authentifizierungs-Cookie-Prüfung durchführen (wie dies bei ssh der Fall ist), es sei denn, es möchte eine Lücke zum X11-Server öffnen.
Wenn Ihnen die Sicherheit am Herzen liegt, -Xwäre das etwas besser als -Y, oder?
Stephen Kitt
13
Viele (die meisten?) X11-Programme funktionieren nicht mit -X, nur mit -Y. Leute nicht bemerken , dass , weil auf vielen System (zB debian.) ForwardX11Trustedeingestellt ist yesstandardmäßig aktiviert und das -Xund -YOptionen sind gleichwertig ;-)
change $DISPLAY to
. Der aktuelle Fragentitel kann in den Suchergebnissen nicht vollständig angezeigt werden, und das Ändern von $ DISPLAY ist wirklich Teil der Antwort, nicht Teil der Frage.Antworten:
Sie können eine zweite Verbindung mit aktivierter X11-Weiterleitung erstellen und anschließend die
DISPLAY
Umgebungsvariable aus der zweiten Verbindung in der ersten verwenden.Im 1. Fenster:
Im 2. Fenster:
Zurück zum 1. Fenster:
Tut leider
ssh
nichts, um die X11 (oder andere) Weiterleitungen an den Prozess / die Sitzung, den / die sie gestartet hat, oder an den Benutzer, den / die sie auf der Remote-Maschine ausführt, zu enthalten (z. B. indem Unix-Sockets verwendet werden, ohne Anmeldeinformationen zu überprüfen oder Namespaces zu verwenden). und diese Weiterleitungen sind einfache TCP-Listening-Sockets, mit denen sich jeder auf der Remote-Maschine verbinden kann; Die gesamte Sicherheit der X11-Weiterleitung hängt von der X11-Authentifizierung ab.X11-Weiterleitung von Hand
In der
sshd_config(5)
Manpage wird Folgendes erwähnt:So können Sie das von Hand machen.
Stellen Sie zunächst sicher, dass alle host- oder benutzerbasierten Zugriffssteuerungen deaktiviert sind, die den x11-Authentifizierungsmechanismus umgehen [1]:
Zeigen Sie dann die Authentifizierungsinformationen für
DISPLAY=:0
auf dem lokalen Computer an:Stellen Sie ohne X11-Weiterleitung eine Verbindung zum Remote-Computer her:
Öffnen Sie die Befehlszeile über
~C
und fügen Sie eine Remote-Weiterleitung vom Port6000+43
zum Unix-Socket hinzu, der der Anzeige entspricht:0
:$DISPLAY
Stellen Sie die Umgebungsvariable ein und fügen Sie die Authentifizierungsinformationen von der lokalen zur entfernten Maschine hinzu:Jetzt können Sie loslegen:
[1] Wegen eines fehlgeleiteten Bugfixes ist die benutzerbasierte Zugriffskontrolle in Debian standardmäßig über aktiviert
/etc/X11/Xsession.d/35x11-common_xhost-local
. Schlimmer noch, es ist das einzige, das standardmäßig in XWayland verfügbar ist und auch nicht deaktiviert werden kann . Jedes Programm, das Proxys des X11-Protokolls (z. B.xscope
) ausführt, muss seine eigene x11-Authentifizierungs-Cookie-Prüfung durchführen (wie dies bei ssh der Fall ist), es sei denn, es möchte eine Lücke zum X11-Server öffnen.quelle
-X
wäre das etwas besser als-Y
, oder?-X
, nur mit-Y
. Leute nicht bemerken , dass , weil auf vielen System (zB debian.)ForwardX11Trusted
eingestellt istyes
standardmäßig aktiviert und das-X
und-Y
Optionen sind gleichwertig ;-)