Ob auf Geschäftsreise, in der Konferenz oder zu Besuch bei Freunden: Mit X2go haben Sie Ihren Desktop der Wahl immer zur Hand – über eine sichere und effiziente Verbindung.
Wer eine Arbeitsfläche via Internet übertragen will, liegt mit dem GPL-Projekt X2go [1] fast immer richtig: Es bringt Linux- und Windows-Desktops schnell, unkompliziert und sicher auf entfernte Rechner, erlaubt den transparenten Transfer von Sound und Dateien in der Session, ermöglicht das Drucken auf lokale Drucker und unterstützt KDE, Gnome, LXDE und beliebige Einzelprogramme im nahtlosen Fenstermodus.
Alle übertragenen Daten verschlüsselt das Tool und sorgt mittels Kompression und flexibler Caches auf beiden Seiten für flüssiges Arbeiten auch bei geringer Bandbreite oder hoher Latenz, zum Beispiel über UMTS-Verbindungen. Als Clients stehen dem Anwender Varianten für Windows, Linux, Mac und mobile Geräte der Maemo-Baureihen (Nokia N700/800/900) bereit. Die wachsende Community arbeitet zudem an weiteren Alternativen.
Die Namen der Software-Versionen korrespondieren dabei mit dem Maskottchen für das Terminalserver-Projektes, der Robbe: Die aktuelle Version 3.1 der Software trägt den Namen “Baikal”, die instabile Variante auf den Namen “Heuler”. Dabei spielt “Baikal” auf eine Besonderheit an, nämlich die Baikal-Robbe, die als einzige ihrer Art ausschließlich im Süßwasser des gleichnamigen Sees lebt.
Das Projekt erhält eine zusätzliche Bedeutung durch die Tatsache, dass das italienische Unternehmen Nomachine die Lizenz für die X2go-Alternative NX mit der kommenden Version 4.0 zu einer Closed-Source-Lizenz ändert. Das löste in der Community viel Unmut aus, und es ist derzeit noch unklar, ob es weiterhin eine kostenlose NX-Version gibt.
Zwar stellt Nomachine den Quellcode gegen eine Gebühr bereit, aber Modifikationen erlaubt das neue Lizenzwerk nicht mehr. Möchten Sie Ihre Daten einem Produkt anvertrauen, dessen Arbeitsweise Sie bei Bedarf bis ins kleinste Detail durchschauen, fahren Sie mit X2go besser.
Stand der Dinge
Obwohl X2go ursprünglich auf dem proprietären NX-Protokoll [2] von Nomachine basierte und lange dessen freie Bibliotheken verwendete, erweist es sich heute als waschechtes Open-Source-Projekt, das in nahezu vorbildlicher Weise freie Technologien verwendet, um diverse Dienste bereit zu stellen (siehe Kasten “X2go: Komponenten”). Für den Einsatz in einer professionellen Umgebung unterstützt die Software außerdem LDAP, Smartcards, Tokens sowie Thin-Client-Management mit PXE-Boot.
X2go: Komponenten
- Netzwerkprotokoll des X-Windows Systems (X11)
- NX-Bibliotheken (überarbeitet und teilweise komplett neu erstellt)
- Secure Shell (SSH)
- Filesystem in Userspace (Fuse) mit der SSHFS-Erweiterung
- Drucksystem Cups
- Pulseaudio (netzwerktransparenter Audio-Dienst)
In der derzeit schnell wachsenden Community tobten in den letzten Monaten einige Diskussionen über die Ziele des Projekts. X2go war lange Zeit das Steckenpferd zweier Entwickler – die Absprachen erfolgten auf Zuruf, die klassischen Mittel zur Kommunikation erschienen überflüssig. In den letzten Jahren erhielt das Projekt jedoch erstaunlichen Zulauf: So engagieren sich seit Anfang 2011 mehrere Universitäten und bringen viele neue Ideen und Patches ein. Die Uni Erlangen treibt quasi im Alleingang die Arbeit an der Thin-Client-Architektur voran – weil sie diese im lokalen Uni-Netz einsetzt. Damit entstanden aber auch Reibereien über die Schwerpunkte der Arbeit.
Nichtsdestotrotz hat der wachsende Zulauf viele positive Nebeneffekte: Ein neues Git-Repository erlaubt, den Code zentral zu verwalten, die Mailingliste ist auf Berlios umgezogen [3], neben Debian-Paketen stehen seit kurzem auch RPM- und spezielle Ubuntu-Pakete bereit (siehe Kasten “Probleme unter Ubuntu”). Wer Hilfe zu einzelnen Komponenten braucht, ist definitiv auf der Mailingliste richtig aufgehoben.
Probleme unter Ubuntu
Unter manchen Versionen von Ubuntu sowie dessen Derivaten berichteten Anwender von Problemen beim Verbindungsaufbau mit einem Server auf dem lokalen Rechner. Dies liegt laut den Entwicklern an fehlerhaften Paketen. Als Anwender haben Sie die Möglichkeit, auf ein PPA zurückzugreifen, dass die Uni Erlangen betreibt und das Sie unter der folgenden Adresse finden:
https://launchpad.net/~siretart/+archive/x2go
Dieses PPA eignet sich auch für eine normale Installation der Software mit allen Komponenten.
Als Clients kommen Webbrowser, native Software oder eine Thin-Client-Architektur infrage. Bei letzterer sorgt der Server dafür, dass Client-Rechner übers Netz die X2go-Umgebung booten. Übers HTTPS, SSH oder das NX-Protokoll nehmen die Clients Kontakt zum Server auf (Abbildung 1), der daraufhin den gewünschten Desktop ausgibt. Diese Vielseitigkeit ermöglicht den Einsatz von X2go auch in komplexen Unternehmens- oder Schulungsszenarien. Daneben zeigt sich X2go in sich flexibel: Abbildung 2 zeigt eine verschachtelte Sitzung.

Abbildung 1: Die X2go-Architektur bietet für professionelle Anwender viele interessante Komponenten, bis hin zur redundanten Anbindung für sichere Server.

Abbildung 2: X2go erlaubt verschachtelte Sitzungen: Hier läuft KDE 3.5 auf einem entfernten Server. Der Benutzer hat je eine KDE 4.6 (links oben) und eine LXDE-Sitzung (rechts unten) auf dritten Rechnern geöffnet.
Nativer Client
Einer der nativen Clients präsentiert sich als schlankes Qt-Programm (Abbildung 3) mit einem zweigeteilten Interface. Wer nicht auf Qt setzen will, holt sich entweder den CLI-Client für die Kommandozeile oder den GTK-Client aus den gleichnamigen Software-Paketen. Die Clients für Windows, Mac und Maemo finden Sie auf der X2go-Webseite. Der Kasten “Installation” hilft beim Setup der Software.

Abbildung 3: Seit der 2009 erschienenen Version 3 hat X2go einen intuitiven Client, in dem Sie viele Funktionen per Mausklick erreichen.
Installation
Unter Debian 5.0 “Lenny” haben Sie X2go schnell installiert. Dazu legen Sie als User root eine Datei x2go.list mit dem Inhalt aus Listing 1 im Verzeichnis /etc/apt/sources.list.d/ an. Seit das Projekt im Jahr 2010 auf den Radarschirm von OpenSuse geriet, gibt es auch RPM-Pakete fürs Chamäleon.
In den Debian-Repositories, die im Test fehlerfrei ab Ubuntu 8.04 und auch mit “Natty Narwhal” liefen, finden sich zahlreiche Archive, die für unterschiedliche Einsatzzwecken dienen (siehe Tabelle “Paketvarianten”). Seit April 2011 existiert bei DEB-basierten Systemen nur noch ein Paket für den Server, die Aufteilung in x2goserver-home oder x2goserver-one entfällt.
Die Installation erledigen Sie am schnellsten auf der Kommandozeile. Um Server und Client auf dem lokalen System zu installieren und gleich für die richtige Konfiguration der beteiligten Dienste zu sorgen, genügt der Befehl:
$ sudo aptitude install x2goserver-home x2goclient
Hakt hier etwas, finden Sie in vielen Fällen im Wiki und auf der Mailing-Liste Tipps zur Fehlersuche. Prüfen Sie jedoch vor der Installation die Funktionsfähigkeit der beteiligten Dienste (siehe Kasten “X2go: Komponenten”). In der Regel konfiguriert das X2go-Paket diese korrekt.
Wichtig ist zudem die richtige Gruppenmitgliedschaft: Normalerweise sollten Benutzer auf Server und Client mindestens in den Gruppen fuse, und x2gousers enthalten sein. Wer Druck- und Datentransfer nicht benötigt, braucht nicht Mitglied in fuse zu sein.
Listing 1
deb http://x2go.obviously-nice.de/deb/ lenny main
Paketvarianten
| Paket | Funktion |
|---|---|
x2goserver |
allein stehender Terminalserver mit lokaler Authentifizierung |
x2goclient, x2goclient-gtk, x2goclient-cli |
QT-, GTK- und Befehlszeilenclient |
x2gosmartcardrules |
fortgeschrittene Features für Profis, wie zum Beispiel Smartcard-Authentifizierung |
x2goprint |
Drucken übers Netz |
x2goldaptools |
zentrale LDAP-Benutzerverwaltung |
x2gogroupadministration, x2gouseradministration, x2gohostadministration |
Administrationstools, die sich nahtlos ins KDE-Kontrollzentrum einklinken |
x2gothinclient |
älteres Modul, das PXE-Boot mit echten Thin Clients ermöglicht |
x2gospyglass |
sammelt Screenshots aller angeschlossenen Terminals und zeigt sie als Thumbnails in einer Übersicht (ideal zum Beispiel für Schulklassen) |
Die Oberfläche des Clients fällt weitgehend selbsterklärend aus: Im Bereich rechts finden Sie die konfigurierten Sitzungen, im blauen Feld links melden Sie sich mit Ihrem Benutzernamen und Ihrem Passwort beim angewählten Server an. Eine neue Sitzung legen Sie entweder übers Menü Sitzung | Neue Sitzung oder das entsprechende Icon in der Werkzeugleiste.
Im folgenden Popup für die Konfiguration geben Sie dann einen Sitzungsnamen und als Host localhost an. Außerdem wählen Sie eine Sitzungsart (KDE, Gnome, LXDE, Windows). Wie bei Nomachines NX haben Sie auch bei X2go die Möglichkeit, dedizierte Programme zu starten oder die Verbindung zu einem Windows-Terminalserver durchzureichen. Setzen Sie eine andere Desktop-Oberfläche ein, gilt es zu recherchieren, wie Sie das entsprechende Programm explizit aufrufen.
Normalerweise genügen die Angabe eines Sitzungsnamens, Hosts und Benutzers, gefolgt vom Klick auf Ok. Damit haben Sie die neue Sitzung bereits konfiguriert. Sie aktivieren Sie per Mausklick auf den entsprechenden Eintrag im rechten Bereich – oder konfigurieren per Dropdown-Menüs, die sich beim Überfahren mit der Maus aktivieren, zum Beispiel die gewünschte Fenstergröße.
Der kleine, nach unten zeigende Pfeil um unteren rechten Rand des weißen Sitzungsbereichs führt zur Konfiguration und einem netten Feature: dem Erzeugen eines Desktopsymbols für die Sitzung. Das funktioniert über die Parameter der Software. Listing 2 zeigt eine beispielhafte .desktop-Datei.
Listing 2
#!/usr/bin/env xdg-open [Desktop Entry] Exec=x2goclient --hide --sessionid=20101124121455066 Icon=/usr/share/x2goclient/icons/x2gosession.png Name=Localhost StartupNotify=true Terminal=false Type=Application X-KDE-SubstituteUID=false
Die Session-Nummer und weitere Daten des Clients finden Sie im Verzeichnis ~/.x2goclient, vor allem die Parameter printing, sessions und settings verdienen einen Blick – hier landen alle Einstellungen des Clients; die Details ändern Sie bei Bedarf mit wenig Aufwand. Welche Parameter es noch gibt, verrät der Befehl x2goclient --help in einem Terminal.
Gib Laut
Bei vielen Distributionen bildet das Audiosystem Pulseaudio die Grundlage für die Ausgabe von Tönen. Haben Sie in der Sitzungskonfiguration unter Einstellungen im Bereich Audio (Abbildung 5) das Optionsfeld Audiounterstützung aktivieren angeschaltet, sollte X2go ohne weitere Probleme Musik abspielen und lokale Mikrofone nutzen können.

Abbildung 5: Haben Sie Pulseaudio auf Client und Server installiert, kommen Sie in den Genuss transparenter, bidirektionaler Audiowiedergabe. Selbst Videotelefonie klappt damit – ausreichend Bandbreite vorausgesetzt.
Die Standardeinstellungen sowohl von X2go als der meisten Distributionen arbeiten in vielen Fällen gut. Treffen Sie auf Probleme, bietet sich die Mailing-Liste als erste Anlaufstelle an. Außerdem lohnt es sich, die Pulseaudio-Konfiguration zu überprüfen. Ein Video von X2go-Entwickler Heinz-Markus Graesing zeigt, dass die Audio-Ausgabe selbst von mobilen Geräten mit niedriger Bandbreite und wenig CPU-Leistung [4] aus funktioniert.
Speicher für alle
Auf dem Reiter Freigegebene Ordner wählen Sie lokale Pfade aus, die auf dem Server bereitstehen sollen. So laden Sie bequem Dateien vom Client auf den Server hoch oder von diesem auf den lokalen Rechner herunter. Ein Klick auf das Ordnersymbol öffnet den Auswahldialog (Abbildung 6). Im Beispiel steht ein Ordner Shared_Files für den Austausch von Daten bereit. Nach Ok und Hinzufügen steht dieses Verzeichnis in der nächsten Session bereit – vorausgesetzt, Fuse und SSHFS funktionieren einwandfrei. Auf diesem Weg binden Sie beispielsweise USB-Sticks unkompliziert ein.

Abbildung 6: X2go nutzt für den Datenaustausch zwischen Server und Client Fuse und SSHFS. Ein lokales Verzeichnis steht so auf dem Server bereit.
Schwarz auf Weiß
Auch beim Drucken nutzt X2go Fuse und SSHFS, bedient sich allerdings eines pfiffigen Tricks: Der Server exportiert einen Drucker, der den Namen X2go trägt. Diesen aktivieren Sie, indem Sie ihn in der Session als Drucker X2go hinzufügen. Dahinter steckt nichts anderes als ein vom Server via SSHFS gemountetes Spool-Verzeichnis, indem X2go die Druckdateien hinterlegt.
Nach dem Speichern der Daten im Verzeichnis startet der Client über den lokalen Cups-Server den Druckjob. Damit das klappt, aktivieren Sie in der Sitzungskonfiguration (Einstellungen) die (voreingestellte) Option Clientseitige Druckerunterstützung (Abbildung 5).
Die Art, wie der Client Cups mit dem Drucken beauftragt, legen Sie ebenfalls im X2go-Client fest. Im Menü des Programms finden Sie unter Einstellungen | Konfiguration | Druck den Dialog aus Abbildung 7. Wer hier einen Drucker auswählt und das Optionsfeld Diesen Dialog vor Druckstart anzeigen deaktiviert, erhält seine Ausdrucke auf diesem Client immer und ohne Popup auf dem ausgewählten Standarddrucker.

Abbildung 7: Das Drucken in Terminalserver-Umgebungen erweist sich immer wieder als Problem. Wer beim X2go-Setup die passenden Optionen aktiviert und Cups korrekt einrichtet, druckt problemlos auf einem lokalen Gerät.
Wenn’s klemmt
Hin und wieder kommt es vor, dass ein Programm – meist wild gewordener Flash-Content – die Session blockiert, weil bei 100 Prozent CPU-Last nicht mehr viel für den Anwender übrig bleibt (und X2go derzeit noch keine Videokompression unterstützt). Dann bietet der Sitzungsmanager des Clients die Möglichkeit, Sitzungen zu beenden. Er findet sich im Client unter Sitzung | Sitzungsverwaltung (Abbildung 8). Aus einer laufenden Sitzung verwenden Sie [Strg]+[Alt]+[T] (“terminate”, Beenden) oder [Strg]+[Alt]+[F] (“Fullscreen”, Vollbildmodus an/aus).

Abbildung 8: Bleibt eine Sitzung hängen – zum Beispiel, weil das Flash-Plugin im Firefox abstürzt – hilft der Sessionmanager weiter.
Im Test verursachten abweichende Tastaturbelegungen bei Client und Servern unterschiedlicher Betriebssysteme Probleme. Wer beispielsweise einen Ubuntu-Client mit einem Debian-Server verbindet und auf einer der Maschinen ein Evdev-Managed-Keyboard, auf der anderen aber eine generische Intel-PC-Tastatur eingestellt hat, stolpert spätestens bei einem Wiederaufnehmen der Session über nicht funktionierende Sondertasten.
Dieses kleine Problem beheben Sie entweder, indem Sie auf allen beteiligten Systemen das gleiche Tastaturlayout einstellen – zum Beispiel in der KDE-Kontrollzentrum unter Tastaturlayout – oder indem Sie im X2go-Client die richtigen Einstellungen im Bereich Tastatur (Abbildung 5) vorgeben.
Fazit
Wer X2go ein wenig testet, kommt schnell auf den Geschmack. Vom gemeinsamen Benutzen eines Desktops (der klassischen Support-Situation) mit dem Paket x2godesktopsharing bis hin zum Webbrowser-Plugin [5] finden sich interessante Features, die allerdings noch nur mit der aktuellen Entwicklerversion (im X2go-Jargon “Heuler” genannt) funktionieren.
Die Roadmap [6] des Projekts sieht neben dem fortlaufenden Erweitern der Enterprise-Features ein vollständig neues Browser-Plugin vor, das nach den Plänen der Entwickler auch mit Microsofts Internet Explorer funktionieren soll. Außerdem haben die Entwickler damit begonnen, die Altlast der Abhängigkeit von KDE 3.5 aufzulösen: Die neuen Admin-Module setzen auf Qt4 auf; Skolelinux erhält als eine der ersten Distributionen das neue Admin-Center.
Diverse Umstrukturierungen (wer mag, liest sich auf der Mailingliste durch die lange Diskussion zum Projektmanagement) tragen jetzt Früchte: Neben dem Git-Repository gibt es neuerdings Nightly Builds für die Mutigen und bald ein eigenes PPA für Ubuntu. Zeitgleich zum Erscheinen des Artikels wollen die Maintainer die Webseite komplett überarbeiten und vollständig im Stil eines Wikis präsentieren. Es lohnt sich außerdem, die FAQ [7] des Projekts im Blick zu behalten, denn auch hier veröffentlichen die Entwickler Aktuelles zur Software.
Glossar
-
Evdev
-
Komponente des Linux-Kernels, welche Eingabegeräte wie Tastaturen, Mäuse oder Joysticks verwaltet. Arbeitet eng mit einem Gegenstück im X-Server zusammen.
Infos
[1] X2go: http://www.x2go.org
[2] Nomachine: http://www.nomachine.com
[3] X2go-Mailingliste: https://lists.berlios.de/mailman/listinfo/x2go-dev
[4] Skype mit X2go und Pulseaudio auf Maemo: http://www.youtube.com/watch?v=WxEsngE6qjc
[5] X2go-Webclient: Michael Kromer, “Zugriff nach Bedarf”, LM 10/2010, S. 72, http://www.linux-magazin.de/Heft-Abo/Ausgaben/2010/10/Zugriff-nach-Bedarf
[6] X2go-Roadmap: http://wiki.x2go.org/roadmap
[7] X2go-FAQ: http://wiki.x2go.org/faq






