Mein häuslicher Linux-Server (Ubuntu LTS) führt ein beschauliches Dasein: mysql, Apache, Samba, Mailserver – aber so gut wie keine Nutzer. Verwaltet habe ich ihn bisher über eine SSH oder eben direkt an der Konsole. Schon lange hatte ich vor per VNC den XFCE4-Desktop auch aus der Ferne bedienbar zu machen. Heute machte ich mich mal an die Arbeit und nachdem es nun halbwegs läuft dokumentiere ich die Ergebnisse – nützlich für mich selbst – und vielleicht auch für andere.
Zunächst stellte sich die Frage welchen VNC-Server ich verwenden sollte. Mit kleinen Umwegen von vino über TightVNC (machte leider Probleme beim Kopieren der Zwischenablage meines XFCE4-Desktop) und RealVNC (das ich aufgrund der Beschränktheit der freien Version verworfen habe) landete ich schließlich bei x11vnc.
Mit x11vnc kann man problemlos einen vorhandenen Desktop „übernehmen„, bzw. besser gesagt, sich aufschalten und synchron zum lokalen Desktop an beiden Stellen bedienen.
Vor der Installation sollte man ggf. vino und/oder andere VNC-Server entfernen. Die Installation von x11vnc per aptitude oder Synaptic verläuft völlig problemlos.
Nun gibt es zwei Möglichkeiten: Entweder auf dem VNC-Server-System ist bereits ein X11-Nutzer angemeldet und es läuft bereits ein X11 oder eben nicht. Wenn ja, kann man einfach x11vnc starten und anschließend vom Client aus darauf zugreifen. Wenn kein X11 läuft – sondern stattdessen ein Anmeldefenster wie gdm, kdm oder (in meinem Fall) xdm, dann kann man sich dieses ebenfalls auf den Client-Bildschirm holen, indem man den „raw display manager MIT-MAGIC-COOKIE“ holt. In meinem Fall war dies in /var/lib/xdm/authdir/authfiles/XXXXX anstelle der XXXXX natürlich den Namen der dortigen Datei. Übrigens befindet sich der Hinweis hierzu sehr deutlich auf der Ausgabe, die man nach dem Start von x11vnc auf dem Bildschirm bekommt.
Start des VNC-Servers:
x11vnc -ncache 10 -auth /var/lib/xdm/authdir/authfiles/XXXXXXX -usepw
Danach ist der Server für den VNC-Client erreichbar – falls nicht irgendwo dazwischen ein Router oder eine Firewall hängt, welche den Port 5900 blockiert.
SSH-getunnelte Verbindung
Wie kann man nun die Verbindung (Passwort und Verbindungsdaten) komplett verschlüsseln, um auch gefahrlos aus dem Internet eine Verbindung aufzubauen? Eine verständliche Anleitung fand ich beim Autor von x11vnc Karl Runge.
Im Prinzip geht man so vor:
Starten einer ssh-Verbindung (unter Windows mit putty) mit einem Tunnel des lokalen Ports 5900 auf Port 5900 des VNC-Servers und anschließender Start eines VNC-Clients mit Verbindung zu localhost der dann über den getunnelten Port 5900 auf den eigentlichen VNC-Server geleitet wird.
Als Client nutze ich unter Windows die USB-Version von TightVNC. So hat man seinen VNC-Client auf dem USB-Stick immer zusammen mit putty dabei und kann von überall eine sichere Verbindung zum Desktop aufbauen.
Danach erfolgt der Start des VNC-Servers in der SSH – wie oben beschrieben.
Wie geht es weiter – was mich noch interessieren würde
Wie kann ich anstelle mich auf eine bereits laufenden X11 einzuhängen, eine neue starten?