Wie funktioniert ssh -X?

9

Bei Verwendung ssh -Xwird die ausführbare Datei kopiert und lokal ausgeführt oder auf dem Hostcomputer. Da es als X11-Weiterleitung bezeichnet wird, denke ich, dass das Fenster auf meinem Computer gezeichnet ist, aber auf dem Host ausgeführt wird.

Steve Burdine
quelle
Übrigens und einige Linux-Distributionen wäre dies ssh -Y
txwikinger
5
@txwikinger: -X und -Y werden von Linux ssh unterstützt. -Y führt eine vertrauenswürdige Weiterleitung durch.
kbyrd
"Remote X Apps mini-HOWTO" beschreibt, woraus Teile X bestehen und wie sie aufgeteilt werden und interagieren, wenn Sie remote arbeiten.
Grzegorz Wierzowiecki

Antworten:

17

Die ausführbare Datei wird auf dem Remotecomputer ausgeführt und auf dem lokalen Computer angezeigt (gezeichnet). Was ssh -X remotetut , ist startet einen Proxy - X11 - Server auf der Remote - Maschine. Wenn Sie dies echo $DISPLAYauf dem Remote-Computer tun , sollten Sie so etwas wie sehen localhost:21.0. Dies weist das auf dem Remotecomputer ausgeführte Programm an, Zeichenbefehle mit der ID 21 an den X11-Server zu senden. Dadurch werden diese Befehle an den realen X11-Server weitergeleitet, der auf dem lokalen Computer ausgeführt wird und auf Ihrem Bildschirm zeichnet. Diese Weiterleitung erfolgt über eine verschlüsselte SSH-Verbindung, sodass sie nicht (leicht) abgehört werden können.

Im Gegensatz zu Windows, Mac OS usw. wurde X11 von Anfang an so konzipiert, dass Programme über ein Netzwerk ausgeführt werden können, ohne dass Remotedesktop erforderlich ist. Für eine Weile waren X11 Thin Clients beliebt. Es handelt sich im Grunde genommen um einen abgespeckten Computer, auf dem nur ein X11-Server ausgeführt wird. Alle Programme werden irgendwo auf einem Anwendungsserver ausgeführt.

KeithB
quelle
3
"X11 Thin Clients" wurden normalerweise als "X Terminals" bezeichnet.
X11 wurde entwickelt, um Programme über ein Netzwerk ausführen zu können, da X11 ein Netzwerkprotokoll ist. :) Und viele vollwertige Workstations hatten eine X-Terminal-Option, bei der sie einen einfachen Kernel mit Root über NFS (oder auf Ramdisk) starteten und nur einen X-Server ausführten. Der Sun XKernel war einer von ihnen. Sie können es auf fleischigen (aber plattenlosen) Workstations wie Sun 3/50, 3/60, 3/75 oder dem späteren SPARCstation-Klassiker, SLC, ELC usw. ausführen
Alexios
@Alexios Ich erinnere mich an die alte Sun 3-Serie. Wir hatten einen Raum voller Sun X-Terminals (plattenlos), die von einem einzelnen Server für unser Computerlabor ausgeführt wurden. Ziemlich lustig, als die Stromversorgung flackerte und alle rund 20 X Terms gleichzeitig zu booten versuchten. Das Hauptproblem bestand darin, dass Suns Vision über das hinausging, was die Technologie zu diesem Zeitpunkt unterstützen konnte.
KeithB
Das hat es definitiv getan. Aber wenn Sie darüber nachdenken, hätten Sie heute die gleichen Probleme, wenn Sie versuchen würden, ein Labor mit 20 leistungshungrigen Multi-Core-Bestien von einem einzigen Server aus zu betreiben. Wir betreiben Motorola 68020s nicht mehr mit 16 MHz, aber die niedrigste moderne Spezifikation von Grafikgeräten war damals ungeahnt. Ich sabberte an Suns 1152x900 256-Farben-Displays ohne Beschleunigung. Aber das waren die 80er Jahre. :)
Alexios
1

Die Anwendung wird remote ausgeführt, mit Ausnahme der X-Komponenten (dh Rendern der x-Befehle usw.), die lokal ausgeführt werden. Jede Clientanwendung 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.

txwikinger
quelle
0

Das Einstellen $DISPLAYist jedoch nur die halbe Miete. Um die Clients auf der Serverseite authentifizieren zu können, wird sshauch xauthein neues Authentifizierungscookie erstellt. Siehe xauth listund ~/.Xauthority.

al.
quelle
0

Der Schlüssel kann darin bestehen, zu erkennen, dass der X-Server eine einzelne Sache ist, die einem Benutzer Grafiken bereitstellt, und dass alle verschiedenen Programme, die Grafiken benötigen, X-Clients sein und eine Verbindung zu einem Server herstellen müssen. Die Schnittstelle zwischen Client-Programmen und dem X-Server wurde von Anfang an so konzipiert, dass Verbindungen mit Remote-Programmen unterstützt werden, nicht nur mit denen auf dem lokalen Computer.

In einem Netzwerk, das verrückt genug ist, kann ein Programm überall ausgeführt werden und seine Grafiken überall anders anzeigen ...


quelle