In der heutigen Zeit sind Linux-Distributionen oft so weit, dass sie auch ein Standardanwender ohne große Schwierigkeiten installieren kann. Dennoch gibt es im laufenden Betrieb immer wieder mal Probleme, wo nur ein „Linux-Crack“ helfen kann. Schlecht, wenn der mehrere hundert Kilometer entfernt wohnt. Gut, wenn es eine Software gibt, die dabei hilft, über diese Entfernung dennoch Unterstützung zu leisten: VNC.
Hintergrund
Der Anwendungsfall ist leicht beschrieben: Fast jeder, der länger mit Linux zu tun hat, kommt früher oder später dazu, bei Freunden oder Verwandten Linux auf deren Rechner aufzuspielen. Sei es, weil die eigene Überredungskunst so groß ist oder weil die PC-Besitzer wieder einmal über das aktuell installierte Betriebssystem fluchen. Das Resultat hiervon sind meist nächtliche Anrufe, weil das E-Mailprogramm mal wieder den Dienst versagt oder der Benutzer mit GIMP zur Bildbearbeitung überfordert ist.
Wohnt man vor Ort, kann man schnell vorbei schauen und sich dem Problem annehmen. Wohnt man aber weit entfernt, bleibt fast nur der telefonische Support. Das hat zur Folge, dass die Problembeschreibung eher vage ist (vor allem, wenn die Benutzer kein Englisch können und versuchen, englische Fehlermeldungen vorzulesen) und umgekehrt muss man grob aus dem Kopf wissen, wo der Hilfesuchende hinklicken oder was er eintippen muss, um alles wieder zum Laufen zu bewegen.
Die Lösung: VNC
Die Lösung für obiges Problem nennt sich Virtual Network Computing (kurz VNC). Hierüber ist es möglich, den Bildschirminhalt eines entfernten Rechners (z.B. über das Internet) anzuzeigen und dessen Maus- und Tastatureingaben zu steuern.
Der Artikel legt dabei Wert auf zwei Dinge: Einfachheit und Sicherheit!
Das Thema „Einfachheit“ ist vor allem bei neuen Linux-Nutzern bzw. nicht ganz so erfahrenen Computern-Benutzern wichtig. Man kann nicht erwarten, dass diese erst ein Terminal öffnen, um etwas einzugeben. Alles muss am besten per Doppelklick funktionieren.
Das Thema „Sicherheit“ ist wichtig, weil man schließlich den kompletten Bildschirminhalt über das Internet überträgt. Werden hier Passworte oder auch nur Login-Daten eingegeben, sollten dies besser nicht von außen eingesehen werden können.
Zusätzlich gab es beim realen Anwendungsfall das Problem, dass man von außen nicht auf den PC des Hilfesuchenden zugreifen konnte, da der Internet-Provider durch einen Proxy den Direktzugriff unterbunden hatte. Es musste also eine Möglichkeit geschaffen werden, dass der Hilfesuchende sich zum Helfer verbindet und nicht umgekehrt, wie man es normalerweise umsetzen würde. Dies nennt sich dann Reverse-VNC.
Vorbereitungen auf der Helfer-Seite
Die Vorbereitungen stützen sich zum Teil auf den VNC-Artikel im ubuntuusers-Wiki.
Die meiste Arbeit muss der Helfer auf sich nehmen, sodass der Hilfesuchende nur extrem wenig zu tun hat.
Neues Nutzerkonto einrichten
Damit der Hilfesuchende sich überhaupt zum Helfer-PC verbinden kann, wird ein neues Benutzerkonto benötigt, welches man einfach mittels
# adduser hilfesuchender
anlegen kann. Den Benutzernamen hilfesuchender
kann man dabei natürlich nach den eigenen Wünschen oder nach dem Log-in des Hilfesuchenden anpassen (was oft am praktischsten ist).
Der Benutzer muss nicht Mitglied besonderer Gruppen sein, so kann er auch selbst wenig Unsinn anstellen. ;)
SSH-Server installieren
Für eine sichere Verbindung sollte man SSH (Secure Shell) nutzen. Hierfür muss auf dem Helfer-PC ein SSH-Server laufen, den man über das Paket openssh-server installieren kann. Eine spezielle Einrichtung ist nicht erforderlich.
Port-Forwarding einrichten (optional)
Wer hinter einem Router sitzt (was heute schon fast Standard ist), muss noch dafür sorgen, dass der SSH-Port 22 korrekt an den eigenen Rechner hinter dem Router weitergeleitet wird. Ansonsten ist keine SSH-Verbindung von außen möglich.
Die Einrichtung unterscheidet sich je nach Router. Bei einer FRITZ!Box findet man die Portweiterleitung in der Regel unter „Internet -> Freigaben“. Als Einstellung wählt man, dass der eingehende Port 22 per TCP-Protokoll an den Port 22 des Helfer-PCs weitergeleitet wird. Hierfür muss man die IP-Adresse des Helfer-PCs eingeben, die man im Terminal mittels
$ ifconfig
eth0 Link encap:Ethernet Hardware Adresse 00:00:00:00:00:00
inet Adresse:192.168.178.2 Bcast:192.168.178.255 Maske:255.255.255.0
herausbekommt. Die eigene Netzwerkkarte hat normalerweise die Kennung eth0
. Bei einer WLAN-Verbindung wäre es wlan0
. Die Adresse hinter inet Adresse
ist die IP, die man im Router zur Weiterleitung angeben muss.
DynDNS-Konto erstellen (optional, aber sinnvoll)
DynDNS ist ein Internet-Dienst, der kostenlos anbietet, Webadressen auf bestimmte IP-Adresse zu leiten. DNS steht dabei für Domain Name System und dient der Namensauflösung solcher Adressen. Ruft man beispielsweise Heise über http://www.heise.de/ im Browser auf, könnte man auch einfach die Zahlenkolonne/IP-Adresse http://193.99.144.85/ aufrufen. Da sich diese Zahlen aber kaum jemand merken kann und sie sich vor allem auch ständig ändern, nutzt man eben nur den Namen www.heise.de
, der dann auf die
richtige IP-Adresse geleitet wird.
Bei DynDNS konnte man sich früher ein kostenloses Konto einrichten und dort z.B. die Adresse helfer.dyndns.org
registrieren. Das helfer
sollte man aber besser etwas eindeutiger wählen. Da dies scheinbar heute nicht mehr möglich ist, gibt es die Alternativen No-IP und FreeDNS. Beide Dienste habe ich aber nicht getestet, da ich ein DynDNS-Konto besitze.
Über die Einstellungen auf der Webseite kann man dann immer, wenn man es benötigt, seine aktuelle IP-Adresse eintragen. Diese ändert sich nämlich normalerweise mit jeder Einwahl ins Internet. Dank der Zwangstrennung der Provider also täglich. (Ausnahmen sind Internet-Provider, die jedem Kunden eine feste IP-Adresse zuweisen.) Die eigene IP-Adresse bzw. genau genommen die IP, über die der eigene Router erreichbar ist, bekommt man entweder über die Webseite checkip.dyndns.org oder im Terminal:
$ curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'
Etwas komfortabler geht es mit manchen Routern, bei denen man Dynamic DNS fest einstellen kann. Der Router meldet sich dann bei jeder IP-Änderung am jeweiligen Portal (als z.B. DynDNS) an und speichert dort die IP-Adresse. Somit ist man immer aktuell erreichbar. In der FRITZ!Box findet man die Einstellung hierfür unter „Internet -> Freigaben -> Dynamic DNS“.
Sicherheitshinweis: Durch die automatische Übertragung der IP-Adresse ist der eigenen Rechner also immer über den eingetragenen Namen erreichbar. In der Regel ist es genau das, was man will, aber man sollte hier schon sehr sicher sein, dass der eigene Rechner/Router abgesichert ist, da bei einer (versehentlichen) Veröffentlichung des Namens ggf. Angriffe auf den Rechner/Router geführt werden. Das heißt, es sollten keine unnötigen Ports weitergeleitet werden und keine unnötigen Dienste auf dem Rechner laufen.
VNC-Viewer installieren
Die Installation des VNC-Viewer ist der einfachste Punkt dieser Anleitung. Man muss nur das Paket xvnc4viewer installieren.
Vorbereitungen auf der Seite des Hilfesuchenden
Damit der Hilfesuchende später bei einem Problem wenig tun muss, muss der Helfer nur drei Dinge einrichten, die eine einfache und sichere Verbindung ermöglichen.
SSH-Schlüssel erstellen und kopieren
Damit der Hilfesuchende möglichst automatisch ohne Passworteingabe eine sichere Verbindung zum Helfer-PC aufbauen kann, nutzt man einen sogenannten SSH-Schlüssel. Dieser besteht aus einer langen Zeichenkombination und sorgt für eine eindeutige Identifizierung einer Person.
Auf dem Rechner des Hilfesuchenden erzeugt man sich am besten ein SSH-Schlüsselpaar, falls man nicht eh schon eines hat:
$ ssh-keygen -t rsa
Bei der Frage nach einem Passwort gibt man nichts ein und drückt nur [Enter]. Die Datei ~/.ssh/id_rsa.pub
enthält dann den Schlüssel, den man auf den Helfer-PC übertragen muss.
Man speichert den Inhalt der Datei dort in eine neue Textdatei /home/hilfesuchender/.ssh/authorized_keys
. Wenn man den Benutzer hilfesuchender
weiter oben anders genannt hat, muss man dies natürlich anpassen.
Im Wiki von ubuntuusers.de wird noch empfehlen, den Zugriff des Benutzers einzuschränken. Dies kann man tun, wenn man noch mehr Wert auf Sicherheit legt.
VNC-Programm installieren
Dieser Punkt ist wieder einfach, denn es muss nur das Paket x11vnc installiert werden.
Verbindung herstellen
Bevor man gleich mit VNC loslegt, sollte man überhaupt die Verbindung prüfen. Auf dem Rechner des Hilfesuchenden kann man sich per SSH beim Helfer-PC einloggen:
$ ssh hilfesuchender@helfer.dyndns.org
Sollte man DynDNS nicht eingerichtet haben, kann man auch nur die IP-Adresse nutzen, die man wie oben beschrieben über checkip.dyndns.org herausbekommt:
$ ssh hilfesuchender@212.255.231.242
Sollte hier nach einem Passwort gefragt werden, sollte man den SSH-Schlüssel in der der Datei /home/hilfesuchender/.ssh/authorized_keys
auf dem Helfer-PC überprüfen. Ist der Login nicht erlaubt, wurde der Benutzer hilfesuchender
vielleicht nicht richtig angelegt.
Ist bei der Verwendung von DynDNS keine Verbindung möglich, sollte man erst einmal prüfen, ob die IP-Adresse stimmt:
$ ping helfer.dyndns.org
Reverse-VNC-Verbindung aufbauen
Auf dem Helfer-PC muss man den VNC-Viewer starten:
$ vncviewer -listen
Damit lauscht der VNC-Viewer auf eingehende Verbindungen.
Auf der Seite des Hilfesuchenden verbindet man sich per SSH auf den Helfer-PC und startet dann x11vnc, um eine Verbindung herzustellen:
$ ssh -f -L 5500:localhost:5500 hilfesuchender@helfer.dyndns.org sleep 10; x11vnc -connect_or_exit localhost:5500
Der Port 5500
ist der Standardport, über den VNC normalerweise kommuniziert und der über die Option -L
lokal weitergeleitet wird, sodass der Helfer-PC sich dorthin verbinden kann. Die Option -f
setzt SSH in den Hintergrund, ehe es die Kommandos danach ausführt. Die Wartezeit von 10 Sekunden ist dafür da, dass die Verbindung auch korrekt etabliert wurde, ehe VNC gestartet wird. Hinweis: x11vnc
ist nicht mehr Teil des SSH-Kommandos und wird auf dem PC des Hilfesuchenden ausgeführt.
Wie oben auch, muss man helfer.dyndns.org
durch die IP-Adresse ersetzen, wenn man kein DynDNS nutzt.
Jetzt sollte eigentlich auf dem Helfer-PC ein Fenster aufgehen, in dem man den Desktop des verbundenen Rechners sieht. Zusätzlich kann man auch Maus und Tastatur steuern.
Damit ist man am Ziel und kann bei einem Problem ziemlich leicht helfen.
Skript zum Ausführen
Damit der Hilfesuchende nicht auf der Konsole die Verbindung aufbauen muss, kann man den Befehl auch in ein kleines Skript gießen, welches man auf dem Desktop verlinkt. Dies kann der Hilfesuchende dann einfach per Doppelklick ausführen. Wichtig dabei ist der Haken bei „Im Terminal ausführen“, damit man etwaige Fehlermeldungen mitbekommt.
#!/bin/sh
ssh -f -L 5500:localhost:5500 hilfesuchender@helfer.dyndns.org sleep 10; x11vnc -connect_or_exit localhost:5500
exit 0
Fazit
Der Artikel hat gezeigt, wie man ohne viel Einrichtung bei Linux-Problemen auf einem entfernten Rechner helfen kann. Der Benutzer muss dafür im Optimalfall nur ein Desktop-Icon doppelklicken, nachdem der Helfer einen Verbindungsaufbau erlaubt hat. Das Ganze geschieht dank SSH zusätzlich noch gesichert.
Es gibt noch andere VNC-Viewer (siehe Wikiartikel von ubuntuusers.de), aber man sollte am besten nie eine ungesicherte Verbindung ohne SSH benutzen, wenn es sich vermeiden lässt. Auch wenn man nichts zu verbergen hat, ist die ungesicherte Übertragung von persönlichen Daten und Passwörtern über das Internet ein sehr guter Weg, sein System zu kompromittieren. Und damit ist dem, der Hilfe sucht, im Endeffekt wenig gedient.