Netzwerkweit ein Desktop mit VNC

Aus LinuxUser 05/2002

Netzwerkweit ein Desktop mit VNC

Desktop überall

Virtual Network Computing (VNC) erlaubt den Zugriff auf einen gemeinsamen Desktop von verschiedenen Rechnern, die sogar unterschiedliche Betriebssysteme verwenden können. Zusammen mit einem SSH-Tunnel geht das sogar sicher.

Wer regelmäßig auf mehr als einem Rechner arbeitet, kennt die Prozedur: Nach dem Anmelden sind etliche Fenster neu zu öffnen, Dokumente wieder zu laden und Web-Seiten zu suchen. Moderne Desktops verfügen zwar über Session Management, so dass bei einem netzwerkweit verfügbaren Home-Verzeichnis zumindest die Anwendungen des zugehörigen Desktops wieder an der richtigen Stelle erscheinen – mit “Desktop-fremden” Programmen wie Netscape ist das aber nicht möglich.

Noch schlimmer wird es, wenn zwei eingesetzte Rechner unterschiedliche Betriebssysteme verwenden. Ein gutes Netzwerk-Setup kann zwar sicher stellen, dass Sie auch von Windows aus auf Ihr Linux-Home-Verzeichnis zugreifen können, aber alle gewohnten Anwendungen fehlen.

Elegante Lösung

VNC löst das Problem, indem es den kompletten Desktop des einen Rechners in einem Fenster auf dem zweiten Rechner darstellt. Wir beschreiben im Folgenden die Einrichtung eines VNC-Servers unter Linux und eines VNC-Clients unter Linux und Windows.

Server

Ein VNC-Server unter Linux ist im Grund ein doppelter Server: Zum einen stellt er einen vollwertigen X-Server dar; nach dem Start können Sie ihn in der Regel über localhost:1 ansprechen. Angezeigt wird dabei aber nichts: Der Server läuft ohne Ausgabe. Zu sehen kriegen Sie den auf dem neuen X-Server laufenden Desktop erst, wenn Sie einen VNC-Client (vncviewer) starten: Diesem gegenüber tritt der Server dann als VNC-Server auf und überträgt den Desktop-Inhalt als Bildinformation.

Zum Einrichten des VNC-Servers benötigen Sie entweder die VNC-Quelltexte oder ein vorkompiliertes RPM-Paket namens vnc-server. Im RPM-Fall ist die Installation ein einfaches

rpm -Uvh rpm-server…..rpm

Einige Distributionen liefern die Pakete vnc und vnc-server bereits mit; dann ist es am einfachsten, diese zu installieren. Für andere Distributionen finden Sie auf der Heft-CD Pakete. Die Sourcen sind von der Download-Seite bei AT&T (http://www.uk.research.att.com/vnc/download.html) auch erhältlich; das haben wir nicht getestet.

Server-Start

Der nächste Schritt besteht im Start des Servers. Wenn Sie zunächst die Voreinstellungen des VNC-Servers testen möchten, rufen Sie einfach das Skript vncserver auf; dieses startet dann den eigentlichen Server Xvnc mit den Standard-Parametern. Achten Sie auf die Ausgabe des Server-Start-Skripts: Dort wird eine Display-Nummer (:1, :2, etc.) angegeben, die Sie gleich für den Zugriff auf den Server benötigen.

Aus Sicherheitsgründen legen Sie jetzt noch ein Passwort für den Zugriff fest: Verwenden Sie dazu das Kommando vncpasswd und geben Sie das Wunsch-Passwort (das nichts mit Ihrem Account-Passwort zu tun hat) zwei mal ein. Es wird verschlüsselt in der Datei ~/.vnc/passwd abgelegt.

Linux Client

Für einen ersten Test greifen Sie lokal auf die laufende VNC-Sitzung zu: Installieren Sie das vnc-Paket, das den Client vncviewer enthält. Wenn Sie nun auf der Konsole den Befehl

vncviewer localhost:1

eingeben (wobei “:1” eventuell durch die richtige Display-Nummer zu ersetzen ist), erscheint (nach korrekter Eingabe des weiter oben gesetzten VNC-Passworts) der neue Desktop in einem eigenen Fenster. Der Window Manager ist ein alter Unix-WM: twm ist nicht gerade komfortabel, weshalb Sie das sicher ändern wollen.

Abbildung 1: Ein VNC-Viewer unter Windows (erkennbar am Fensterrahmen) zeigt einen Linux-Desktop mit Window Manager xfce an

Abbildung 1: Ein VNC-Viewer unter Windows (erkennbar am Fensterrahmen) zeigt einen Linux-Desktop mit Window Manager xfce an

Desktop anpassen

Der VNC-Server führt nach dem Start das Skript ~/.vnc/xstartup aus: Dort findet sich auch am Ende die Zeile “twm &”, die den twm startet. Diese können Sie einfach durch eine Zeile ersetzen, die einen Desktop Ihrer Wahl startet, beispielsweise “startkde &”, “startgnome &” oder “startxfce &” (für den Desktop XFCE, der mit wenig Speicher auskommt).

Abbildung 2: In der Datei ~/.vnc/xstartup wird auch der Window Manager festgelegt

Abbildung 2: In der Datei ~/.vnc/xstartup wird auch der Window Manager festgelegt

Mehrere Clients

Wenn Sie versuchen, einen zweiten vncviewer-Prozess zu starten, wird dies nur teilweise erfolgreich sein: Nach Passworteingabe öffnet sich zwar ein neues Fenster mit dem Desktop, dafür wird das erste aber geschlossen. Das liegt daran, dass Sie die Clients im “non-sharing”-Modus gestartet haben: So können VNC-Displays immer nur von einem Client gleichzeitig angezeigt werden.

Wenn Sie an zwei Arbeitsplätzen (etwa in zwei Büros oder Räumen im gleichen Gebäude) abwechselnd arbeiten wollen, ist ein geteilter Zugriff wünschenswert. Der einfachste Weg, das zu erreichen, ist, den Server in der Betriebsart “always shared” zu starten. Fahren Sie den aktuell laufenden Server zunächst mit

vncserver -kill :1

(Die Display-Nummer muss ggf. wieder angepasst werden.) Starten Sie den Server erneut, diesmal aber mit folgender Kommandozeile:

vncserver -alwaysshared -geometry 1000x700 -depth 24

Das Beispiel enthält neben der Option “-alwaysshared” für die kooperativere Betriebsart noch zwei weitere populäre Argumente:

  • “-geometry 1000×700” setzt die Größe des VNC-Desktops, in diesem Fall auf 1000 x 700 Punkte.
  • “-depth 24” setzt die Farbtiefe; standardmäßig läuft der Server mit nur 8 Bit, was auf einem höher auflösenden Display bei der Anzeige nicht sehr gut aussieht. Starten Sie nun vncserver erneut. Wenn seit dem letzten Abbruch nicht genug Zeit vergangen ist, kann der Server nicht auf dem gleichen Port laufen und nimmt sich einen neuen, was auch die Display-Nummer ändert (:2 statt :1). Das müssen Sie bei neuen Client-Starts berücksichtigen. Mit den geänderten Einstellungen lassen sich beliebig viele Verbindungen gleichzeitig aufbauen.

Sinnvoll wird das Ganze erst, wenn Sie von einem anderen Rechner aus auf den Server zugreifen. Wenn es sich dabei auch um einen Linux-PC handelt, installieren Sie auch dort den Client (der Server wird nicht benötigt). Anstelle des Aufrufs “vncviewer localhost:1” ist nun der Rechnername einzugeben, also zum Beispiel

vncviewer myserver:1

falls der Rechner, auf dem der VNC-Server läuft, myserver heißt und Desktop-Nummer :1 verwendet wird. Im Ergebnis sehen Sie ein und denselben Desktop nun auf zwei Rechnern.

Viel Netzverkehr

Wenn Sie nur eine lokale Verbindung aufbauen, werden die Daten zwischen Client und Server unkomprimiert (“roh”) übertragen – im Netz wäre das störend, weswegen VNC Kompressionsalgorithmen bei Verbindung über das Netz verwendet. In einer Testverbindung über DSL waren die Zeiten, die für die Bildschirmaktualisierung benötigt wurden, akzeptabel; für langsamere Modem- oder ISDN-Verbindungen wird dies nicht gelten. Wollen Sie es dennoch mit einem Modem versuchen, hilft ein kleiner Trick: Verwenden Sie einfach einen sehr kleinen Desktop (etwa 500×400 Punkte) und stets nur 8 Bit Farbtiefe, das reicht für die Darstellung einer kleineren Anwendung.

Windows Client

In einer heterogenen Umgebung müssen oder wollen Sie vielleicht auch von einem Windows-Rechner aus auf den VNC-Desktop zugreifen. Dazu verwenden Sie den VNC-Windows-Client, den wir auch auf die Heft-CD gepackt haben. Nach der Windows-typischen Installation finden Sie ein Icon auf dem Desktop, über das sich der Viewer aufrufen lässt. Er fragt zunächst nach dem Servernamen, der wieder in der Form “rechnername:display”, also etwa “myserver:1” eingegeben wird – wenn Ihr Windows-Rechner lokale Netzwerknamen nicht auflösen kann, verwenden Sie stattdessen die IP-Adresse, also z. B. “192.168.1.199:1”.

Der Desktop lebt weiter

Wenn der VNC-Server auf einem Rechner läuft, der nicht ausgeschaltet wird, dann können Sie eine VNC-Sitzung ewig ab Leben halten: Auch wenn sich alle VNC-Clients abgemeldet haben, bleibt der VNC-Server aktiv, und alle darunter gestarteten Programme laufen weiter. So kommen Sie bei der nächsten Anmeldung zu dem Zustand zurück, indem Sie den Client beendet haben. Aus Sicherheitsgründen sollten Sie aber alle offenen Dokumente sichern, bevor Sie den Client schließen.

Sicherheit mit SSH

VNC schützt zwar mit einem Passwort vor unberechtigtem Verbindungsaufbau, die eigentliche Übertragung erfolgt aber (ähnlich einer Telnet-Sitzung) unverschlüsselt. Wenn Ihnen das zu unsicher ist, bauen Sie einen SSH-Tunnel auf.

Zunächst ist der VNC-Server mit der zusätzlichen Option “-localhost” zu starten: Dadurch können keine Verbindungen von anderen Rechnern aufgebaut werden. Um nun doch von einem anderen Rechner zuzugreifen, “tunneln” Sie den VNC-Port über SSH. Das geht wie folgt: Die Port-Nummer des VNC-Servers lässt sich einfach aus der Display-Nummer errechnen, indem Sie 5900 addieren; für Display :1 ist es also Port 5901. Der folgende Befehl setzt voraus, dass der VNC-Server auf einem Rechner myserver läuft und Sie den SSH-Befehl auf einem Client-Rechner eingeben.

ssh -L 5901:myserver:5901 myserver

SSH fragt nun wie üblich nach dem Passwort. Was zusätzlich passiert, ist, dass Verbindungen zu Port 5901 auf dem Client an Port 5901 von myserver weitergeleitet werden. Wenn Sie nun den VNC-Client starten wollen, geben Sie also

vncviewer localhost:1

an. Der Viewer sucht dann nach einem lokal laufenden VNC-Server und spricht dazu Port 5901 (lokal) an. Dieser wird durch SSH verschlüsselt an den richtigen Port auf dem Server weitergeleitet, und die VNC-Verbindung steht. Ist der Client ein Windows-Rechner, müssen Sie ein SSH-Paket für Windows installieren; eine Beschreibung würde den Umfang dieses Artikels sprengen. Der SSH-Aufruf ist dann identisch.

Abbildung 3: Haben Sie unter Windows die Secure Shell (zum Beispiel aus den CygWin-Tools [6] installiert, können Sie ein Desktop-Icon für den Aufbau des SSH-Tunnels anlegen

Abbildung 3: Haben Sie unter Windows die Secure Shell (zum Beispiel aus den CygWin-Tools [6] installiert, können Sie ein Desktop-Icon für den Aufbau des SSH-Tunnels anlegen

krfb: VNC für KDE mit mehr Features

Vielleicht ist Ihnen bei der bisherigen Lektüre der Gedanke gekommen: “Warum muss ich einen neuen Desktop erzeugen und kann nicht den aktiven verwenden?”

Genau hier setzt das Projekt krfb an: Wenn Sie das Programm aus den Quellen übersetzen und starten, erscheint im KDE-Panel (unterstützt werden KDE 2.2 und 3.0) ein neues Icon, das die Konfiguration des VNC-Servers erlaubt. Wählen Sie eine Desktop-Nummer (z. B. 1, um den Desktop als “server:1” ansprechen zu können) und vergeben Sie ein Passwort.

Abbildung 4: Die krfb-Konfiguration wird über das Kontextmenü des krfb-Icons in der Startleiste aufgerufen

Abbildung 4: Die krfb-Konfiguration wird über das Kontextmenü des krfb-Icons in der Startleiste aufgerufen

Wenn Sie nun auf einem entfernten Rechner (nicht auf dem gleichen!) den VNC-Client starten, erfolgt kein direkter Verbindungsaufbau – zunächst öffnet sich auf dem Server ein krfb-Fenster, indem Sie darüber informiert werden, dass ein Client Kontakt aufbauen möchte. Gestatten Sie den Verbindungsaufbau, können Sie auf dem Client noch das Passwort eingeben, und schon sehen Sie im Fenster Ihren aktiven KDE-Desktop vom Server. Hier wird also kein neuer (leerer) Desktop gestartet, sondern Sie arbeiten auf dem entfernten Rechner mit dem regulären Desktop. Dieses Feature bietet der reguläre VNC-Server nicht. Im VNC-Fenster können Sie nun sogar wie gewohnt mit [Strg-F1],[Strg-F2] etc. zwischen den verschiedenen “Desktops” von KDE umschalten.

Abbildung 5: Bevor kfrb eine Verbindung zulässt, fragt ein Fenster auf dem Server nach

Abbildung 5: Bevor kfrb eine Verbindung zulässt, fragt ein Fenster auf dem Server nach

Abbildung 6: So sieht der von krfb exportierte KDE-Desktop unter Windows aus (Bild in 1600x1200 Punkten, Größe: 390 KB)

Abbildung 6: So sieht der von krfb exportierte KDE-Desktop unter Windows aus (Bild in 1600×1200 Punkten, Größe: 390 KB)

krfb kompilieren

Da es keine RPM-Pakete für krfb gibt, zum Schluss noch eine kurze Anleitung zur Installation: Für KDE 2.2.x verwenden Sie die kfrb-Version 0.5.1; für KDE 3.0 die Version 0.6. Entpacken Sie das Quellcode-Archiv von der Heft-CD, wechseln Sie in das neu angelegte Verzeichnis krfb-0.x.x und führen Sie dort als Benutzer root den üblichen “Linux-Dreisatz”

./configure
make
make install

durch. Der letzte Schritt installiert alle erzeugten Dateien unterhalb von /usr/local/kde/; den Client starten Sie dann durch Eingabe von

/usr/local/kde/bin/kfrb &

Wenn Sie krfb lieber in das KDE-Standard-Verzeichnis installieren möchten (je nach Distribution /usr oder /opt/kde2), verwenden Sie beim configure-Aufruf die Option --prefix=/usr (bzw. --prefix=/opt/kde2).

Wer nicht mit KDE arbeitet, aber trotzdem auf den normalen X-Server zugreifen möchte, kann sich das X0rfbserver-Projekt [5] ansehen: Die Software erfüllt die gleiche Funktion wie krfb, setzt aber kein spezielles Desktop-System wie KDE oder GNOME voraus.

Die VNC-Web-Seite http://www.uk.research.att.com/vnc/ bietet eine Menge an zusätzlichen Informationen zu VNC, unter anderem ein FAQ-Dokument mit häufig gestellten Fragen.

Infos

[1] Homepage von VNC: http://www.uk.research.att.com/vnc/

[2] Linux-Magazin-Artikel zu VNC (historisch: 1998): http://www.linux-magazin.de/ausgabe/1998/06/VNC/vnc.html

[3] DirectVNC, ein VNC-Client, der nicht unter X, sondern auf einem Linux-Framebuffer (Konsole) läuft: http://www.adam-lilienthal.de/directvnc/

[4] krfb, KDE-VNC-Server: http://www.tjansen.de/krfb/

[5] X0rfbserver: http://hexonet.de/software/x0rfbserver/

[6] CygWin-Tools für Windows, inkl. Bash, ssh etc.: http://sources.redhat.com/cygwin/

LinuxUser 05/2002 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben