Remote X-Sessions
Allgemeines
Das Ausführen von Programmen/Experimenten kann teilweise implizite graphische X-Objekte erzeugen, so dass eine entferntes Ausführen mittels screen
nicht möglich ist. Für diesen Fall kann man sich eine minimalistische X-Session auf entfernten Rechner, wie sie mittels VNC zur Verfügung gestellt wird, nutzen. Prinzipiell handelt es sich dabei um gewöhnliche X-Sessions (wie sie auch lokal am Rechner genutzt werden), allerdings ist die Geschwindigkeit der Interaktion mit graphischen Elementen relativ langsam!
Basics
Zur erst loggt man sich auf dem gewünschten Zielrechner ein und startet mittles
vncserver -geometry 1024x768
eine X-Session. Die Angabe über den Parameter geometry
legt die Auflösung fest; wird diese Option nicht mitangegeben, so wird die lokale Auflösung übernommen. Startet man das Programm zu ersten Male, so wird man aufgefordert ein Passwort einzugeben. Dieses wird dann zu Authentifizierung des Clients benutzt. Die Ausgabe schaut in etwa wie folgt aus
New 'X' desktop is HOSTNAME:SESSION_NUMBER Starting applications specified in /home/USER/.vnc/xstartup Log file is /home/USER/.vnc/HOSTNAME:SESSION_NUMBER.log
mit folgenden wichtigen Informationen:
- HOSTNAME ist der Name des Rechners auf dem die X-Session läuft
- SESSION_NUMBER ist die ID der X-Session und wird benötigt, um diese wieder ansprechen zu können
Anschließend kann man sich wieder ausloggen und sich mittles
vncviewer HOSTNAME:SESSION_NUMBER
zur entfernten X-Session verbinden. Sind alle Programme durchgelaufen, so lässt sich die X-Session via
vncserver -kill :SESSION_NUMBER
auf dem entsprechenden Rechner beenden. Das schliessen des Fensters mit der X-Session beendet diese natürlich nicht ;)
Advanced Features
Die Interaktion in der entfernten X-Session erfolgt dadurch, dass Input-Signale (Tastatur, Maus, etc.) auf dem Client registriert werden und an den entfernten Rechner übertragen werden. Dazu wird ein einfaches Protokoll verwendet, welches nicht verschlüsselt ist. Das bedeutet, dass jeder im lokalen Netz sensitive Information, die in der X-Session eingegeben werden mitlauschen kann. Um dies zu unterbinden, sollte man (insbesondere, wenn man sich nicht im lokalen Netz befindet) die Daten verschlüssel übertragen. Am einfachsten ist dies mittels Port-Forwarding und SSh zu erreichen:
ssh -N -L 5901:localhost:PORT_X-SESSION HOSTNAME_X-SESSION
dabei steht PORT_X-SESSION
für den Port der X-Session und HOSTNAME_X-SESSION
für den Rechner auf dem die X-Session läuft. (Man beachte, dass solange der Port-Forward steht, das SSH-Kommando weder terminiert noch eine Ausgabe von sich gibt!) Den Port der X-Session bestimmt sich durch 5900 + SESSION_NUMBER
. Entsprechend muss auch der Aufruf von vncviewer
abgeändet werden zu:
vncviewer localhost:1
Natürlich lassen sich auch mehrere X-Session verschlüsselt übertragen, man muss nur 5901 durch höhere Ports ersetzen.
In Kürze
Die wichtigsten Befehl zusammengefasst sind:
Entfernter Rechner
vncserver -geometry 1024×768
, welches eine X-Session startvncserver -kill :SESSION_NUMBER
, welches eine X-Session beendet
Lokaler Rechner
ssh -N -L 5901:localhost:590p HOSTNAME_X-SESSION
baut ein Port-Forwarding auf (p steht für die SESSION_NUMBER)vncviewer localhost:1
verbindet sich zu der X-Session