Grafische Fernwartung mit VNC

Linux Grafische Fernwartung mit VNC

Manchmal ist es angenehmer, zur Fernwartung eines Rechners nicht nur eine [GLOSS:Shell], sondern eine grafische Oberfläche zu haben. In anderen Fällen machen Programme mit grafischer Oberfläche die Benutzung über die Kommandozeile unmöglich. Aber auch, um mal eben den Rechner eines Freundes am anderen Ende Deutschlands zu reparieren, kann dieses System genutzt werden. Die Rede ist von VNC. Dabei wird ein Desktop über eine Netzwerkverbindung zu einem entfernten Rechner übertragen, der dann als VNC-Client den in einem Fenster angezeigten Desktop so bedienen kann, als würde man gerade eben an diesem sitzen. Damit das funktioniert, müssen beide Rechner eine lauffähige grafische Oberfläche installiert haben, was heute ja quasi Standard ist. Dann installiert man unter Debian woody:

apt-get install vncserver

auf dem Rechner (VNC-Server), der aus der Ferne gewartet werden soll, also dessen Desktop man sich auf einem anderen Rechner anschauen und benutzen können will. Auf dem VNC-Client installiert man mit

apt-get install xvncviewer

ein Programm, mit dem man sich die verschickten Desktop-Bilder anschauen kann. Wer die Datenübertragung verschlüsseln möchte, der muss auf beiden Rechnern zusätzlich sie Secure Shell (ssh) installieren.

VNC einrichten

Auf dem VNC-Server, also dem zu wartenden Rechner, genügt es, das Kommando

vncserver

in der Konsole auszuführen. Beim ersten Start wird man nach einem Passwort gefragt, welches dann später einzugeben ist, wenn man sich mit diesem Rechner verbinden will. Wichtig ist auch, dass man als VNC-Client dann mit den Rechten des Benutzers arbeitet, der dieses Kommando abgesetzt hat. Startet man den vncserver als root, bekommt der VNC-Client einen root Desktop, was nicht immer nötig ist. Sinnvoller kann es da sein, den VNC Dienst als normaler Benutzer (oder spezieller VNC Benutzer) zu starten und dann die bekannten Mechanismen zu nutzen, um grafische Programme als root zu benutzen. Man kann auch mehrere VNC-Server starten, wobei diese dann Nummern erhalten. Bei Linux geht es mit der Nummer 1 los, dessen Server-Dienst auf Port 5901 lauscht und der n-te Server lauscht dann auf 5900+n. Da VNC ein standardisiertes Protokoll ist, gibt es VNC auch für Windows. So kann man von Linux aus einen Windows-Rechner fernwarten oder umgekehrt. Bei Windows gibt es bekanntlich nur einen Desktop, der dann unter der Nummer 0 über Port 5900 angesprochen wird. Doch zurück zu Linux. Einen einmal gestarteten VNC Dienst beendet man mit

vncserver -kill :1

wobei die 1 durch entsprechend andere Nummern ersetzt werden kann. Beim Start des Server Dienstes wird ein entsprechendes Verzeichnis .vnc im Heimatverzeichnis des Benutzers angelegt. Dort befindet sich dann unter anderem eine Datei passwd, in der das eingegebene Passwort verschlüsselt gespeichert wird. Will man dieses nachträglich ändern, so reicht der Aufruf von

vncpasswd

und die zweimalige Eingabe des neuen Passwortes.

Auf der Client Seite sieht das auch nicht komplizierter aus. Hier wird vor allem die IP-Adresse oder der einem DNS-Server bekannte Rechnername benötigt. Letzteres wird wohl bei Otto-Normal-Rechnern nicht der Fall sein, wenn man sich über Telebla ins Internet einwählt. Dann muss dem Besitzer des VNC-Client die IP-Adresse per Telefon oder anderweitig mitgeteilt werden. Diese kann der Besitzer des Servers in der Regel als root via

ifconfig

herausfinden. Neben der IP-Adresse ist auch das beim Start des Server-Dienstes eingegebene Passwort zu übermitteln. Optimal wäre allerdings für beides eine Übertragung in einer verschlüsselten Mail. Der Client gibt dann einfach in einem xterm oder einem anderen X-Terminal

xvncviewer [IP-Adresse]:n

ein. Also für die IP-Adresse 123.123.123.123 und den ersten Server-Dienst auf Port 5901 zum Beispiel

xvncviewer 123.123.123.123:1

Danach erfolgt eine Passwortabfrage und sofern das richtige Passwort eingetippt wurde, bekommt man dann den Desktop des anderen Rechners zu sehen und kann diesen wie gewohnt per Maus steuern. Dabei sieht man aber stets einen eigenen Desktop, der unabhängig ist von dem aktuellen Desktop des dortigen Anwenders. Möchte man sich später noch einmal mit dem gleichen Rechner verbinden, dann sollte man nur das Fenster des xvncviewers wegklicken und nicht wie gewohnt den Windowmanager beenden. Denn dieser ist dann weg und man bekommt bei der nächsten Verbindung ein leeres Fenster. Sehr schön ist, dass man durch beenden des xvncviewers nicht die Anwendungen auf dem entfernten Rechner beendet. Startet man in einer Session eine Textverarbeitung (oder was auch immer) und verbindet sich später neu, so findet man den Desktop und die Textverarbeitung unverändert vor. Allerdings muss man auch dazu sagen, dass eine solche Verbindung nur mit einer etwas dickeren Leitung ins Internet wirklich Spaß macht. Modem-User werden hier wohl kaum auf den Geschmack kommen.

SSH-Tunnel

Wer diese Übertragung gern verschlüsseln möchte und noch etwas Bandbreite übrig hat, der kann einen SSH-Tunnel für diese Zwecke verwenden. Dies verlangsamt die Übertragung der Desktop-Bilder zwar merklich, ist aber nicht nur gut für's Gewissen, sondern auch für die Privatsphäre. Einen SSH-Tunnel baut man durch Eingabe von

ssh -L 5902:localhost:5901 Benutzer@Ziel-IP

auf dem VNC-Client. Dazu muss es einen entsprechenden Benutzer auf dem VNC-Server geben, der einen SSH Zugang erlaubt. Dies ist in der Regel einfach ein normaler Benutzer, wie man ihn mit jedem üblichen Konfigurationsprogramm anlegen kann. Es geht aber auch als root mit

adduser Benutzername

Das beim Anlegen eingegebene Passwort ist auch gleich das Passwort für den SSH Zugang. Gibt man nun das obige SSH-Kommando ein, so erstellt man einen Tunnel vom lokalen Rechner und Port 5902 zum entfernten Rechner mit der angegebenen IP-Adresse und dem dortigen Port 5901, der für den ersten VNC Dienst steht. Es ist das Passwort für den angegebenen Benutzer einzugeben und wenn man einen Login-Bildschirm erhält, ist man drin. Damit ist dieses Terminal blockiert und man muss den xvncviewer von einem anderen Terminal aus starten, was aber nicht weiter weh tut. Dabei verbindet man sich nun nicht mehr mit dem anderen Rechner, sondern mit dem "Tunnel-Eingang" auf dem lokalen Rechner:

xvncviewer localhost:2

Die Zwei zeigt hier an, dass man nun Port 5902 nutzen möchte. Ansonsten verhält sich abgesehen von der Geschwindigkeit nun alles so, wie in dem Fall ohne SSH-Tunnel. Ist der xvncviewer beendet, dann tippt man auch in der Tunnel-Verbindung "exit" ein und beendet somit den Tunnel zum anderen Rechner.

Hinterm fli4l Router...

...funktioniert das nicht so einfach. Wer seine(n) Rechner über einen [LINK:START:66]fli4l[LINK:END] Router ins Internet bringt, der muss zunächst noch dafür sorgen, dass man diese(n) auch aus dem Internet erreichen kann. Die entsprechenden Verbindungen aus dem Internet werden zum Router aufgebaut, der dann die Pakete an den korrekten Rechner weiter leiten muss. Wie man das macht, ist sehr schön in einem deutschen [LINK:START:319]HOWTO[LINK:END] beschrieben.

Artikelbewertung: 
No votes yet
War dieser Artikel hilfreich?