Wie funktioniert ssh -X?

Wie funktioniert ssh -X?

Wird die ausführbare Datei bei der Verwendung ssh -Xkopiert und lokal ausgeführt oder wird sie auf dem Host-Computer ausgeführt? Da es sich um X11-Weiterleitung handelt, gehe ich davon aus, dass das Fenster auf meinem Computer gezeichnet, aber auf dem Host ausgeführt wird.

Antwort1

Die ausführbare Datei wird auf dem Remote-Rechner ausgeführt und auf dem lokalen Rechner angezeigt (gezeichnet). Dabei ssh -X remotewird ein Proxy-X11-Server auf dem Remote-Rechner gestartet. Wenn Sie dies echo $DISPLAYauf dem Remote-Rechner tun, sollten Sie etwas wie sehen localhost:21.0. Das weist das auf dem Remote-Rechner laufende Programm an, Zeichenbefehle an den X11-Server mit der ID 21 zu senden. Dieser leitet diese Befehle dann an den echten X11-Server weiter, der auf dem lokalen Rechner läuft und auf Ihrem Bildschirm zeichnet. Diese Weiterleitung erfolgt über eine verschlüsselte SSH-Verbindung, sodass sie nicht (einfach) abgehört werden können.

Anders als Windows, Mac OS usw. wurde X11 von Anfang an so konzipiert, dass Programme über ein Netzwerk ausgeführt werden können, ohne dass Dinge wie ein Remote-Desktop erforderlich sind. Eine Zeit lang waren X11-Thin-Clients beliebt. Dabei handelt es sich im Grunde um einen abgespeckten Computer, auf dem nur ein X11-Server läuft. Alle Programme laufen auf einem Anwendungsserver irgendwo.

Antwort2

Die Anwendung wird remote ausgeführt, mit Ausnahme der X-Komponenten (z. B. Rendern der X-Befehle usw.), die lokal ausgeführt werden. Jede Client-Anwendung verwendet normalerweise den lokalen X-Server, um die Benutzeroberfläche anzuzeigen. In diesem Fall werden die Befehle über den verschlüsselten SSH-Kanal vom Remote-Computer an Ihren lokalen Computer gesendet und dort angezeigt.

Antwort3

Das Einstellen $DISPLAYist jedoch nur die halbe Miete. Um die Clients auf der Serverseite authentifizieren zu können, sshverwendet auch xauth, um ein neues Authentifizierungscookie zu erstellen. Siehe xauth listund ~/.Xauthority.

Antwort4

Der Schlüssel liegt vielleicht darin, zu erkennen, dass der X-Server eine einzelne Einheit ist, die einem Benutzer Grafiken zur Verfügung stellt, und dass alle verschiedenen Programme, die Grafiken benötigen, X-Clients sein und sich mit einem Server verbinden müssen. Die Schnittstelle zwischen Client-Programmen und dem X-Server wurde von Anfang an so konzipiert, dass sie Verbindungen mit Remote-Programmen unterstützt, nicht nur mit denen auf dem lokalen Rechner.

In einem ausreichend verrückten Netzwerk könnte ein Programm überall ausgeführt werden und seine Grafiken überall sonst anzeigen ...

verwandte Informationen