Die Ausgaben eines VNC-Servers in ein Browserfenster umleiten Vom Dip zum Tipp: Guacamole

Wenn entfernte Anwendungen über ein Netzwerk angeboten werden müssen und dabei die Installation eines lokalen Clients unerwünscht oder gar unmöglich ist, kann der Einsatz der Web-Applikation Guacamole sinnvoll sein. Diese ist mit effizienten Mitteln in der Lage, die Kommunikation mit einem VNC-Server in ein Fenster eines HTML5-tauglichen Browsers zu verlagern. Harald Jele

Die Web-Applikation Guacamole läuft als Prozess dem Protokoll „Remote framebuffer“ (RFB), das in in einer Apache Tomcat-Umgebung und ist dabei einem offenen Standard spezifiziert ist [2]. in der Lage, sich mit einem VNC-Server zu verbin­ Neben den typischen Anwendungsgebieten lassen den. Die graphische Ausgabe des VNC-Servers sich über VNC-Verbindungen zudem mit wenigen wird dabei durch Guacamole so aufbereitet, dass Handgriffen einfache Szenarien zum Zweck der diese via HTTP mit einem HTML5-tauglichen Brow­ Aus- und Weiterbildung umsetzen: Ein Vortragen­ ser zur Anzeige gebracht werden kann. Die aktuel­ der arbeitet aktiv an seinem Gerät mit einem Pro­ le Version 0.5 von Guacamole beherrscht aus­ gramm und gibt den Inhalt seines Bildschirms oder schließlich das Weiterreichen von VNC-Verbindun­ die graphische Ausgabe der betreffenden Anwen­ gen. Für zukünftige Ausgaben ist jedoch auch die dung an eine Gruppe von Teilnehmenden frei, die Unterstützung des RDP-Protokolls sowie die Ein­ – sofern dies intendiert ist – unterdessen auf ihren bindung von SSH-Bibliotheken angekündigt [1]. Geräten allein das Geschehen verfolgen aber aktiv nicht eingreifen können. Guacamole: Eigenschaften Die Weiterentwicklung des VNC-Protokolls ist über die Jahre hinweg kontinuierlich fortgeschrit­  VNC-ähnliche Übertragungsraten ten, sodass VNC-Verbindungen neben ihrer einfa­  HTML5 Client chen Konfiguration in stabilen Netzwerken als  kein Plugin im Browser notwendig  Unterstützung von VNC, weitere Protokolle in Ent­ sehr zuverlässig angesehen werden können. wicklung Die hier angedeutete Vielfältigkeit in den Anwen­  eingebaute Bildschirmtastatur dungsgebieten zählt sicher zu den großen Vortei­  Clipboardfunktionen len, die der Einsatz des VNC-Protokolls mit sich  Unterstützung von Touch Screens bringt. Dass dem gegenüber auch Nachteile in  offenes Framework Kauf genommen werden müssen, liegt auf der Hand bzw. zeigt sich beispielsweise auch in den Stärken der Konkurrenzmodelle: VNC zuerst  der Ansatz von NoMachine mit dem Pro­ dukt NX [3] bietet bessere Mechanismen Für einen reibungslosen Einsatz gilt daher, sich zu­ zur Kompression der zu übertragenden erst um die Art und Weise der VNC-Anbindung zu Daten sowie effziente Proxy-Funktionen kümmern. zum Ausgleich von mitunter schwanken­ Der typische Anwendungsfall, in dem VNC-Verbin­ den Latenzzeiten von Netzwerkverbindun­ dungen eine gewichtige Rolle spielen, ist die Fern­ gen wartung eines Computers. Ein Vorteil, der dabei  x2go [4] ist nicht für die Fernwartung ge­ auf der Hand liegt, ist, dass dies über (fast) alle dacht, sondern bringt durch einen Termi­ Grenzen der üblichen Betriebssysteme hinweg nalserver allein entfernte Anwendungen funktioniert. Beim Einsatz des VNC-Protokolls ist auf einen lokalen Computer. Dabei werden zudem unerheblich, ob einzelne Anwendungen diese nahtlos (seamless) am lokalen oder eine vollständige Desktop-Umgebung über Desktop angezeigt. Soundausgaben oder das Netzwerk zugänglich gemacht werden sollen. auch lokale Geräte wie Festplatten kön­ Der VNC-Server liest in diesem Fall die entfernte nen dabei an den Server weitergereicht graphische Ausgabe mit und sendet diese an einen werden. x2go-Clients existieren für meh­ lokalen VNC-Client. Die lokale Eingabe über Maus rere, aber – im Gegensatz zu VNC – nicht und Tastatur werden im Gegenzug durch den Cli­ für alle gängigen Betriebssysteme. ent wiederum der entfernten Anwendung überge­ ben. Da Guacamole mit dem VNC-Server kommuniziert, Technisch gesehen basiert die Kommunikation auf sind dessen Fähigkeiten und funktionale Ein­

1 schränkungen auch für die Kommunikation mit der Diskussionen. Die Entscheidung, die man hier Web-Applikation bestimmend. trifft, ist im Wesentlichen wohl von den eigenen Die meisten Desktop-Umgebungen bringen „unter Vorlieben und Erfahrungen abhängig. Die Entwick­ der Haube“ ohnehin einen VNC-Server mit, der ler selbst äußern sich in dieser Sache eher zurück­ über eine graphische Oberfläche einfach konfigu­ haltend; schließlich sollten sich alle VNC-Server ja riert werden kann. Die Möglichkeiten, dabei be­ gleich oder sehr ähnlich verhalten. sondere Einstellungen vornehmen zu können, fal­ Für das nachfolgende Beispiel wird das Paket len in der Regel jedoch eher bescheiden aus. Im „vnc4server“ installiert. Dabei gelangt jener Ser­ System-Menü eines Gnome2 basierten - ver ins System, der im Lauf seiner Geschichte auch Desktops findet sich im Zweig zu den „Einstellun­ als „RealVNC“ bekannt wurde und dessen Code in­ gen“ der Punkt „Entfernter Bildschirm“. Hier kann zwischen von Entwicklern der gleichnamigen Fir­ die Anzeige des eigenen Desktops über das ma gepflegt wird. VNC-Protokoll sehr einfach freigegeben werden. Der Serverprozess kann zwar einfach auf der Kom­ mandozeile gestartet werden; sinnvoll für die wei­ tere Arbeit sind aber kleine Skripts zum Starten und Stoppen allemal. Mit „vncserver-start.sh“

#!/bin/bash

DIS=2

rm -f /tmp/.X${DIS}-lock rm -f /tmp/.X11-unix/X${DIS}

unset XAUTHORITY unset DISPLAY

killall ssh-agent

# start ssh-agent ssh-agent > $HOME/ssh-agent.sh source $HOME/ssh-agent.sh rm -f $HOME/ssh-agent.sh

Abbildung 1: Einstellungen des Menüpunkts zum „Entfernten vncserver -geometry 1024x768 -depth 24 :$DIS Bildschirm“ unter Gnome2. wird ein VNC-Server-Prozess gestartet, dessen Sind die Einstellungen entsprechend geglückt, graphische Ausgabe eine Geometrie von 1024x768 kann über einen VNC-Client auf Port 5900 und ent­ Bildpunkten mit einer Farbtiefe von 24 bit abbil­ sprechend über Guacamole eine Verbindung auf­ det und diese auf Port 5902 ( ) leitet. Im Vor­ gebaut werden. Zur Ansicht gelangt dabei der In­ DIS=2 halt des gesamten Desktops. feld werden dabei eventuell übriggebliebene Lockfiles entfernt und der „ssh-agent“ für die Au­ Sollen dagegen nur einzelne Anwendungen über thentifizierung weiterer SSH-Verbindungen gest­ das VNC-Protokoll nach außen weitergegeben artet. werden oder sind mehrere Benutzer gleichzeitig an ein und demselben System zu bedienen, ist die Das Stoppen des Serverprozesses kann beispiels­ Installation und Konfiguration eines eigenen VNC- weise mit „vncserver-stop.sh“ erfolgen: Servers sinnvoll, um die Prozesse der einzelnen #!/bin/bash Benutzer weiteren Ports zuweisen zu können. DP=2 Im Repository eines -Systems sind folgen­ vncserver -kill :$DP de Anwendungen integriert: Beim erstmaligen Start des Servers wird von die­ apt-cache search vnc-server sem, nach dem Erfragen eines Passworts, im Ho­ […] meverzeichnis des Benutzers ein Verzeichnis linuxvnc - VNC-Server, ermöglicht den entfernten .vnc Zugriff auf eine TTY-Schnittstelle angelegt. In diesem ist neben einem PID-, einem tightvncserver - VNC(Virtuelle(r)) Netzwerk Com- LOG- und einem Passwortfile letztlich auch ein puter) Server Startup-Skript „xstartup“ hinterlegt, das mit Stan­ vnc4server - Virtual Network Computing (VNC)- Serveranwendung dardwerten versehen ist. Dieses ist für die weitere […] Arbeit anzupassen. Im nachfolgenden Beispiel x11vnc - VNC-Server gestattet Zugriff auf exis- wird davon ausgegangen, dass beim Herstellen ei­ tierende X-Umgebung von außerhalb ner VNC-Verbindung ein einfacher Windowmana­ […] ger („fvwm2“), zwei Anwendungen („gedit“ und Zur Frage, welcher VNC-Server installiert werden „musil_start.sh“) sowie das Hilfsprogramm „vnc­ soll, existieren im Umfeld von Guacamole einige

2 config“ (für das reibungslose Arbeiten mit der Zwi­ send zur Version des Systems, beinhaltet. Aktuell schenablage) gestartet werden: ist dies die Datei

guacamole-0.5.0-ubuntu-11.10-i586.tar.gz #!/bin/sh Nach deren Auspacken mit # This is $HOME/.vnc/xstartup # Uncomment the following two lines for normal tar xfvz guacamole-0.5.0-ubuntu-11.10- # desktop: i586.tar.gz # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc beinhaltet das angelegte Unterverzeichnis folgen­ [ -x /etc/vnc/xstartup ] && de Dateien: exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources guacamole_0.5.0_all.deb fvwm2 & guacd_0.5.0_i386.deb vncconfig -iconic & libguac2_0.5.0_i386.deb gedit & libguac2-dev_0.5.0_i386.deb $HOME/musil2012/musil_start.sh & libguac-client-vnc0_0.5.0_i386.deb

Ein einfacher Test mit einem VNC-Client wie Diese werden durch folgenden Aufruf dem System „gvncviewer rechnername:2“ hinzugefügt: bringt folgende Anzeige zur Ansicht: sudo dpkg -i guacd_*.deb guacamole_*.deb lib- guac2_*.deb libguac-client-vnc0_*.deb

Da Guacamole als Applikation in einer Apache Tomcat-Umgebung läuft, ist als nächstes diese zu installieren. Für die Kommunikation mit dem VNC- Server benötigt man zusätzlich die entsprechende VNC-Library.

sudo apt-get install tomcat6 libvncserver0

Die notwendigen symbolischen Links der Applika­ tion zur Tomcat-Umgebung werden bei der Instal­ lation nicht angelegt. Damit Tomcat Guacamole „findet“, sind diese händisch anzulegen:

sudo ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat6/webapps sudo ln -s /etc/guacamole/guacamole.properties Abbildung 2: Anzeige der gestarteten Anwendungen im /usr/share/tomcat6/lib VNC-Client.

Das in Abbildung 2 rechts oben als Icon angezeigte Durch einen Neustart des Serverprozesses von „vncconfig“ sollte in diesem Installationsvorschlag Tomcat, werden die gelinkten Files eingelesen – immer mitgestartet werden. Anderenfalls ist das und im Prinzip steht damit die graphische Ausgabe Arbeiten mit dem Clipboard auch in Guacamole ei­ des VNC-Servers der Guacamole-Anwendung zur nigermaßen gestört oder gar unmöglich. Verfügung.

sudo /etc/init.d/tomcat6 restart Guacamole danach Für die nachfolgende Anmeldung an der Web-Ap­ Ist das Unterfangen bis hierher geglückt, sollten plikation werden eigene Benutzernamen-Pass­ die nachfolgenden Schritte vergleichsweise ein­ wort-Kombinationen in einem einfach strukturier­ fach gelingen. ten XML-File verwaltet. Dieses ist entsprechend In den üblichen Software-Repositories ist Guaca­ anzupassen. Die betreffende Datei, die durch den mole (noch) nicht vorhanden. Das Installieren und Installationsvorgang angelegt wird, ist vor allem das Einspielen von Updates gelingt da­ her über die Paketmanager der Distributionen /etc/guacamole/user-mapping.xml nicht. Pakete für , Ubuntu und Fedora fin­ den sich neben Anweisungen zur Installation im Die Defaulteinträge sollten aus Sicherheitsgrün­ Download-Bereich der Homepage [1]. den auskommentiert oder gelöscht werden. Eige­ Die Entwickler bieten für Ubuntu eine tar.gz-Datei ne Einträge sind, je nach Passwortmethode, ent­ an, die die entsprechenden Ubuntu-Pakete, pas­

3 sprechend anzulegen. Im einfachen Fall genügt Durch entsprechendes Editieren des Eintrags das Bearbeiten folgenden Abschnitts: localhost vnc in der Datei „user-mapping.xml“ kann erreicht wer­ localhost 5902 den, dass die Tomcat-Umgebung und der VNC-Ser­ vncpasswort ver nicht am selben Rechner installiert und betrie­ ben werden müssen. Sicherzustellen ist dann je­ doch, dass die Anwendung Guacamole den VNC- Mit diesen Einträgen kann sich ein Benutzer mit Server am entsprechenden Port erreichen kann. dem Namen „name“ und dem zugehörigen Pass­ wort „passwort“ mit seinem Browser über Port Bei der Installation von Guacamole werden alle 8080 die graphische Ausgabe seines VNC-Server­ Dateien im Verzeichnis „/etc/guacamole“ mit dem prozesses ansehen, die über einen VNC-Client am Owner und der Gruppenzugehörigkeit von „root“ selben Rechner auf Port 5902 mit dem VNC-Pass­ angelegt und die Dateirechte so vergeben, dass wort „vncpasswort“ angezeigt wird. der Guacamole-Prozess, der mit den Rechten des Users „tomcat6“ läuft, die Dateien lesen kann. Die­ http://rechnername:8080/guacamole/ se Konfiguration bedingt jedoch auch, dass even­ tuell angemeldete Benutzer diese Dateien lesen Der Anmeldebildschirm dazu ist entsprechend ein­ und aus „user-mapping.xml“ die Anmeldedaten so­ fach gehalten. wohl für Guacamole als auch für den VNC-Server entnehmen können. Daher sollten die Rechte so­ wie die Zugehörigkeit zumindest dieser Datei ver­ ändert werden.

sudo chown tomcat6.tomcat6 user-mapping.xml sudo chmod 640 user-mapping.xml

Entscheidet man sich für den Einsatz von Remote- Applikationen, bleiben im Grunde dann noch eini­ ge Fragen zu klären, denn der eigentliche Prozess der Anwendung läuft auf einem entfernten Sys­ tem. Für das Drucken können die Netzwerkfähig­ keiten von CUPS herangezogen werden, findet ein Datenexport oder -import in den einzelnen An­ wendungen statt, helfen eingerichtete Freigaben von Verzeichnissen im (lokalen) Netz, die sowohl Abbildung 3: Der Anmeldebildschirm von Guacamole. dem lokalen als auch dem entfernten System zu­ gänglich sind. Spezielle Eingabegeräte wie Lesege­ Nach erfolgreicher Anmeldung zeigt der Browser räte von Barcodes sind häufig in der Lage, ihre Da­ im günstigen Fall die Ansicht, die bereits aus dem tenausgabe über die Tastatur abzuwickeln und VNC-Client bekannt ist. können daher auch in solchen Umgebungen einge­ setzt werden. Die Integration weiterer Geräte er­ fordert, wenn diese allein technisch überhaupt ge­ lingen kann, zumindest einen erhöhten Aufwand in der Planung.

Als einfache Hilfsmittel zur Datenein- und ausgabe bringt Guacamole zudem eine Bildschirmtastatur sowie ein eigenes Clipboard mit. Diese können mit unter hilfreich sein, wenn die zugehörigen Ausga­ befunktionen des VNC-Servers Probleme bereiten.

Abbildung 4: Die über den VNC-Server gestarteten Anwendun­ gen im Fenster des Browsers.

4 Quellen

[1] Guacamole: HTML5 Clientless Remote Desktop: [http://guac-dev.org/]

[2] Das Protokoll „Remote framebuffer“ für VNC- Verbindungen: [http://datatracker.ietf.org/doc/draft-levine- rfb/]

[3] NoMachine NX – Desktop Virtualization and Remote Access Management: Abbildung 6: Das eingeblendete Clipboard sowie die Bild­ [http://nomachine.com] schirmtastatur von Guacamole. [4] x2go – Open source terminal server project: Fazit [http://x2go.org]

Guacamole erweist sich im täglichen Einsatz als ein sehr interessantes Projekt aus dem Umfeld der Open Source-Entwicklung, das bereits in einer frü­ hen Version Potential zeigt, die Administration ganzer Desktop-Umgebungen und die Integration von Anwendungen in ein Fenster eines Browsers Der Autor zu verlagern. Die Vorzüge liegen in der einfachen Installation Dr. Harald Jele ist Mitarbeiter und Konfiguration sowie in der guten Ausnutzung an der Universität Klagenfurt vorhandener Übertragungskanäle. Eine Kompri­ und beschäftigt sich zur Zeit mierung der zu übertragenden Daten wäre vor al­ (auch) mit den technischen lem dann ein großer Vorteil, wenn die Anwendung Aspekten digitaler Werkedi­ zur Fernwartung eingesetzt wird und vollständige tionen. Desktops angezeigt werden müssen. Eine Dekom­ primierung im Browser sollte mit den modernen Verfahren, Code im Browser auszuführen, durch­ aus realistisch erscheinen.

5