Ratgeber Remote Control Software

Fernzugriff auf Desktops mit VNC

23.04.2009 von Jörg Thoma
Die Virtual Network Console (VNC) holt den Desktop eines entfernten Rechners auf den eigenen Monitor. Man kann damit arbeiten und interagieren, als sei man vor Ort.

Mal eben auf den Rechner zuhause zugreifen, einem Kollegen assistieren oder einen Server fernwarten - die Einsatzmöglichkeiten der Virtual Network Console (VNC) sind praktisch und vielfältig. Nicht einmal Betriebssystemgrenzen spielen eine Rolle. Es ist egal, ob Sie sich von einem Linux-System aus mit einem weiteren Linux- oder gar mit einem Windows-Rechner verbinden wollen. VNC arbeitet betriebssystemunabhängig. Mit den entsprechenden Komprimierungen reicht sogar eine Modem-Verbindung aus. In diesem Beitrag erfahren Sie, welche Programme Sie für Linux und Windows benötigen, wie Sie VNC einrichten und wie Sie die entsprechenden Tools sinnvoll einsetzen.

VNC wurde schon Mitte der achtziger Jahre des 20. Jahrhunderts entwickelt. Damals waren Desktop-Rechner meist nur Thin-Clients, die ohne Festplatte und ohne eigenes Betriebssystem arbeiteten. Diese Clients koppelten sich über das Netzwerk per VNC an einen zentralen Server an, der dem Benutzer dann Festplatte und Betriebssystem zur Verfügung stellte. Heute wird VNC hauptsächlich zur Fernwartung und zu Schulungszwecken verwendet, wenn der Administrator oder Dozent nicht vor Ort sein kann. Mit VNC können Sie sich beispielsweise auch von einem Internet-Café aus mit Ihrem laufenden Rechner zuhause verbinden und diesen nutzen, als säßen Sie direkt davor.

VNC arbeitet nach dem Server-Client-Prinzip. Der Rechner, dessen Desktop Sie über das Netzwerk nutzen wollen, fungiert dabei als Server, stellt also seinen Desktop zur Verfügung. Der Client, also der entfernte Rechner, fordert eine Verbindung an, die der Server-Rechner bestätigen muss. Nach erfolgter Verbindung erscheint dann auf dem Client-Rechner der Server-Desktop in einem eigenen Fenster.

Standardmäßig können Sie vom Client aus den Desktop des Servers sowohl per Maus als auch Tastatur steuern. Dabei wird der Server-Desktop vom Client aber nicht gekapert, der Anwender an dem Server-Rechner kann ebenfalls noch mit Maus und Tastatur eingreifen. So können Sie gemeinsam an einem Projekt arbeiten oder Probleme auf dem entfernten Rechner lösen. Alternativ stellen Sie, etwa zu Schulungszwecken, lediglich Ihren Server-Rechner ohne Eingabegeräte zur Verfügung, der Anwender am Client-PC kann dann lediglich zusehen, was Sie auf dem Server-Rechner machen.

Voraussetzungen

Streng genommen handelt es sich bei VNC lediglich um ein Netzwerkprotokoll, Sie benötigen eine entsprechende Software, die das Protokoll beherrscht. In diesem Artikel erfahren Sie anhand konkreter Beispiele, wann Sie mit welcher Software eine Verbindung herstellen. Fedora Core, Suse Linux und Ubuntu bringen bei einer Standardinstallation schon sämtliche benötigten Bibliotheken und meist auch die Software mit, so dass Sie VNC gleich nutzen können.

Falls Sie eine Firewall einsetzen, müssen Sie den entsprechenden Port für VNC auf beiden Rechnern freigeben, es handelt sich dabei um die Portnummern 5900 bis 5906. Außerdem muss Ihnen der Rechnername oder die IP-Adresse des Server-Rechners bekannt sein. Schließlich sollte auf beiden Desktops eine -zumindest ähnliche - Bildschirmauflösung eingestellt sein, denn der Server-Desktop erscheint auf dem Client-Rechner immer in voller Größe.

Sicherheit

Arbeiten Sie immer mit Passwörtern. Wenn Sie nämlich einen VNC-Server ohne Passwort freigeben, kann jeder, der den offenen Port im Internet entdeckt, sich am Server-Rechner anmelden und hat sofort Zugriff auf sämtliche persönlichen Daten. Viele VNC-Programme verwenden eine verschlüsselte Verbindung, alternativ können Sie die Verbindung auch über eine SSH-Verbindung tunneln (siehe Abschnitt über Verschlüsselung).

VNC mit KDE

KDE bietet recht komfortable grafische Programme zur Verbindung zweier Rechner im internen Netzwerk mit VNC, nämlich Krfb zur Freigabe eines Desktops und Krdc, mit dem ein Client eine Verbindung herstellen kann. Die Programme erhalten Sie, wenn Sie das KDE-Paket "kdenetwork3-vnc" (etwa OpenSuse 10.2) beziehungsweise die beiden Pakete "krdc" und "krfb" (etwa unter Ubuntu 6.10) installieren.

Auf den Server einladen: Rufen Sie zunächst auf dem Rechner, dessen Desktop Sie exportieren wollen, über

<
Alt
>
-
<
F2
>
mit der Eingabe "krfb" das gleichnamige Tool auf. Eine Einladung erstellen Sie nun per Mausklick auf einen der angezeigten Buttons. Sofern Sie KMail nutzen, können Sie nun über das Hauptfenster des Programms ("Einladen per Mail") die Einladung per Mail versenden, oder sich mit "Persönlich einladen" die Informationen anzeigen lassen, die Sie einer anderen Person etwa am Telefon oder mit einem anderen Mailprogramm mitteilen können.

Kommt innerhalb der nächsten Stunde keine Verbindung zustande, verfällt die Einladung. Über "Einladungen bearbeiten" können Sie bestehende Einladungen löschen oder neue erstellen. Haben Sie die Einladung per Mail verschickt, erhält der Eingeladene die IP-Adresse des Server-Rechners und ein temporäres Passwort. Haben Sie "Persönlich einladen" gewählt, sehen Sie diese Informationen in einem eigenen Fenster, das während des Verbindungsaufbaus auch geöffnet bleiben kann.

Am Client die Einladung annehmen: Am Client-PC starten Sie über

<
Alt
>
-
<
F2
>
und die Eingabe "krdc" das gleichnamige Programm. Im Hauptfenster geben Sie neben "Arbeitsfläche auf Fremdrechner" die IP-Adresse des Server-Rechners ein, die Sie per Mail oder Telefon erhalten haben. Vergessen Sie nicht den Doppelpunkt und die Ziffer "0" hinter der IP-Adresse, diese bestimmt den Ausgabe-Port der momentanen X-Server-Session auf dem Server-Rechner. Nach der Eingabe klicken Sie auf die Schaltfläche "Verbinden". Deaktivieren Sie dann die Option "Digitale Brieftasche für Passwörter verwenden". Das Programm Krfb generiert bei jeder neuen Einladung auch ein neues Passwort, die digitale Brieftasche merkt sich aber nur das erste. Klicken Sie abschließend auf "OK".

Am Server die Verbindung akzeptieren: Am Server-Rechner müssen Sie nun in einem neuen Fenster die Verbindung akzeptieren. Hier können Sie noch festlegen, ob der Client-PC auch mit seinen Eingabegeräten Zugriff auf den Desktop erhalten soll. Wurde die Einladung bestätigt, erscheint auf dem Client-Rechner ein Fenster zur Passworteingabe, in das Sie das von Krfb generierte Kennwort eingeben.

Permanente Freigabe mit Krfb

Um den Desktop dauerhaft freizugeben und damit Einladungen überflüssig zu machen, aktivieren Sie auf dem Server-PC im Hauptfenster des Programms Krfb unter "Einrichten, Zugriff" die Optionen "Verbindungen ohne Einladung erlauben" und "Steuerung der Arbeitsfläche durch uneingeladene Verbindungen erlauben". Deaktivieren Sie "Für eine uneingeladene Verbindung um Bestätigung bitten". Schließlich vergeben Sie noch ein Passwort. Zurück auf dem Client-Rechner, starten Sie nun das Programm Krdc, geben dort die IP-Adresse samt Port-Nummer ":0" des Servers ein und erhalten nach Eingabe des korrekten Passworts sofort Zugriff auf den entfernten Desktop.

VNC mit Gnome

Wer den Gnome-Desktop unter Fedora Core oder Ubuntu Linux verwendet, erhält ebenfalls ein komfortables grafisches Front-End für VNC. Installieren Sie mit Synaptic die Pakete "vncviewer" und "xvnc4viewer". Die Einstellungen für die Freigabe als VNC-Server finden Sie im System-Menü unter "Einstellungen, Entfernter Desktop".
Übrigens: Die entsprechenden KDE-Pakete vorausgesetzt, können Sie auch unter Gnome auf Krdc und Krfb zurückgreifen.

Auf dem Server-PC: Zunächst aktivieren Sie die Option "Anderen Benutzern erlauben, Ihren Desktop anzuzeigen" und entscheiden dann, ob Sie dem eingeloggten Benutzer erlauben wollen, mit Eingabegeräten den Desktop zu steuern. Zur Sicherheit sollten Sie ein Passwort setzen. Bei der Fernsteuerung eines unbeaufsichtigten Rechners, etwa eines Servers, sollten Sie auf die Option "Bei Ihnen nachfragen" verzichten. Bestätigen Sie mit "Schließen".

Auf dem Client-PC: Starten Sie das Programm "xvnc4viewer" über die Eingabeaufforderung (

<
Alt
>
-
<
F2
>
) (unter Fedora verwenden Sie "vncviewer"). Dort stellen Sie für den Zugriff über das lokale Netzwerk über "Options, Encoding and Colour Level, Full" noch die volle Farbpalette ein und bestätigen mit "OK". Zurück im Hauptfenster, geben Sie die IP-Adresse des Server-Rechners ein, die Sie als root mit dem Befehl "/sbin/ifconfig" auf dem Server-Rechner ermitteln, gefolgt von dem obligatorischen Port ":0" des X-Servers, etwa "192.168.0.3:0". Nach der Passwortabfrage verlangt der Server-Rechner gegebenenfalls noch eine Bestätigung, wenn Sie Option "Bei Ihnen nachfragen" belassen haben.

Gemischte Desktops

Da es sich bei VNC lediglich um ein Protokoll handelt, bleibt es letztendlich Ihnen überlassen, mit welchen Programmen Sie hantieren. Suse Linux mit installiertem Gnome-Desktop verzichtet beispielsweise auf das Gnome-Front-End zur Konfiguration eines VNC-Servers, hier rüsten Sie einfach Krfb und Krdc im Paket "kdenetwork3-vnc" über Yast von der DVD nach. Für Fedora Core und Ubuntu Linux ist das Paket ebenfalls in den Online-Repositories erhältlich. Außerdem können Sie über Krdc auf einen freigegebenen Gnome-Desktop zugreifen oder umgekehrt mit vncviewer (Abschnitt über Gnome) auf einen mit Krfb (Abschnitt über KDE) freigegebenen KDE-Desktop.

VNC über das Internet

VNC können Sie nicht nur im lokalen Netzwerk, sondern auch über das Internet nutzen. Allerdings sollten Sie folgendes beachten:

  1. Bei Modem- und ISDN-Verbindungen müssen Sie die Daten komprimiert verschicken, das verlangsamt den Bildaufbau auf dem Client-Rechner (Abschnitt über Verschlüsselung).

  2. Selbst bei DSL-Verbindungen der 1000er oder 2000er Klasse beträgt die Upload-Rate meist lediglich doppelte ISDN-Geschwindigkeit. Auch wenn der Server-Rechner über DSL erreichbar ist, müssen Sie mit einer Komprimierung arbeiten (Abschnitt über Verschlüsselung).

  3. Bei Internet-Anschlüssen ohne statische IP-Adresse brauchen Sie stets die aktuelle IP-Adresse (siehe Abschnitt 'Stets erreichbar mit Dyndns' am Ende des Artikels).

  4. Soll der Server-Rechner laufend per VNC erreichbar sein, sollten Sie unbedingt ein komplexes Passwort verwenden, um es potenziellen Angreifern so schwer wie möglich zu machen, es zu knacken.

  5. Sie sollten die Verbindung stets verschlüsselt aufbauen, sonst kann ein Angreifer entweder Ihre Passwörter aushorchen oder sogar in die laufende Verbindung eingreifen (Abschnitt über Verschlüsselung).

  6. Manche Firewalls blockieren den VNC-Port permanent, hier greifen Sie am besten auf freie Ports wie SSH (Port 22) oder VPN zurück.

Achtung: Wenn Sie von außen auf den Rechner in Ihrer Firma oder von dort auf Ihren PC zuhause zugreifen wollen, sollten Sie sich mit Ihrem Systemadministrator absprechen; die unerlaubte Umgehung einer Firewall ist ein Kündigungsgrund.

Verschlüsseln und komprimieren

Das Programm tightvnc bietet etliche Optionen, um einerseits die Daten zwischen VNC-Server und -Client zu komprimieren und sie andererseits effizient zu verschlüsseln. Unter Suse Linux wird das Paket standardmäßig gleich mitinstalliert, unter Ubuntu Linux rüsten Sie über den Paketmanager Synaptic das Paket "xtightvncviewer" nach. Zunächst geben Sie wie gewohnt auf dem Server-Rechner VNC über Krfb oder über "Einstellungen, Entfernter Desktop" frei. Wählen Sie unbedingt ein komplexes Passwort, bestehend aus mehr als acht alphanummerischen Zeichen, am besten gespickt mit Sonderzeichen.

Da tightvnc die Verbindung über SSH verschlüsselt, müssen Sie unter Ubuntu gegebenenfalls das Paket "ssh" nachrüsten. Ermitteln Sie die nummerische IP-Adresse des Servers, oder verwenden Sie Ihre Dnydns-Adresse (siehe Abschnitt 'Stets erreichbar mit Dyndns'auf der letzten Seite).

Wichtig: Auf beiden Rechnern muss ein Benutzer mit gleichem Namen eingerichtet sein, alternativ verbinden Sie sich zuvor per SSH unter einem anderen Benutzernamen (Abschnitt 'VNC mit SSH im Internet'). Auf dem Client-Rechner öffnen Sie nun ein Terminal-Fenster und verwenden bei einer langsamen Modem-Verbindung folgenden Befehl:

vncviewer -via

<
IP-Adresse
>
-bgr233 -compresslevel 9 -quality 0 -x11cursor localhost:0

Unter Ubuntu verwenden Sie stattdessen den Befehl "xtightvncviewer" samt Parameter, um das Programm zu starten.

Zunächst werden Sie aufgefordert, das Benutzerpasswort für die SSH-Verbindung einzugeben, anschließend tippen Sie dann das Passwort für die VNC-Freigabe ein. Der Parameter "-via" stellt eine verschlüsselte Verbindung zum angegebenen Server-Rechner her, "-bgr233" setzt die Farbwerte herab, um mehr Platz für wichtigere Daten zu schaffen. "-compresslevel" bestimmt den Komprimierungsgrad der zu sendenden Daten, wobei Sie hier einen Wert zwischen "0" (keine Komprimierung) und "9" (höchste Komprimierung) verwenden können.

Die gleiche Wertspanne verwenden Sie hinter dem Parameter "-quality", wobei Sie hier die Bildqualität beeinflussen, die vncviewer darstellt. Davon hängt ab, wie viele Daten über das Netzwerk angefordert werden müssen. Der Parameter "-x11cursor" verwandelt den Mauszeiger auf dem Client-Rechner in einen Pfeil, statt eines kleinen Quadrats. Da die Verbindung in diesem Fall von SSH auf den lokalen Rechner getunnelt wird, meldet sich vncviewer nun bei "localhost" auf Port "0" an. Es erscheint immer der auf dem Server-Rechner gegenwärtig gestartete Desktop, egal welcher Benutzer sich dort gerade angemeldet hat. Den obigen Befehl können Sie auch ohne Komprimierung in einem lokalen Netzwerk verwenden.

Wenn der Server-Rechner im Netzwerk sich hinter einem Gateway-Server befindet, dann können Sie mit folgendem Befehl auf den internen Rechner zugreifen:

vncviewer -via

<
IP-Adresse des Gateway-Servers
>
-bgr233 -compresslevel 9 -quality 9 -x11cursor
<
Interne IP-Adresse
>
:0

Weitere Hilfe zu vncviewer erhalten Sie mit der Eingabe "vncviewer --help" und "man vncviewer" unter Suse Linux oder "xtightvncviewer --help" unter Ubuntu.

Fedora Core verwendet standardmäßig das Programm Realvnc, das Sie mit dem Paket "vnc" installieren. Der Befehl:

vncviewer -via

<
IP-Adresse
>
localhost:0

baut eine direkte verschlüsselte Verbindung zu einem VNC-Server auf. Den Befehl

vncviewer -via

<
IP-Adresse des Gateway Servers
>
<
Interne IP-Adresse
>
:0

verwenden Sie, wenn ein Gateway-Rechner dazwischen liegt. Standardmäßig errät Realvnc anhand der Verbindung den optimalen Komprimierungsgrad, alternativ geben Sie dem Programm bei langsamen Verbindungen niedrigere Farbwerte per Parameter mit, etwa "-LowColourLevel=0". Weitere Parameter und Erklärungen dazu erhalten Sie mit "vncviewer --help".

VNC mit SSH im Internet

Ein Nachteil der erwähnten VNC-Programme besteht darin, dass Sie es sich nicht aussuchen können, mit welchem Benutzer Sie sich am Client-Rechner anmelden; es gilt stets der Benutzername, von dessen Shell aus Sie sich einloggen. Das ist dann problematisch, wenn der Anwender auf dem Server-Rechner bei externer Hilfe nicht sein Benutzerkennwort preisgeben will und deshalb für VNC einen speziellen Account eingerichtet hat, der auf dem Client -Rechner nicht existiert. Abhilfe schaffen Sie, indem Sie zunächst vom Client-Rechner aus selbst eine SSH-Verbindung mit einem gültigen Benutzernamen zum Server-Rechner herstellen und erst dann ein VNC-Programm bemühen. Mit

ssh -l

<
Benutzername
>
-L 5901:localhost:5900 -C
<
IP-Adresse
>

verbinden Sie sich zunächst mit dem Server-Rechner. Nach dem Parameter "-l" verwenden Sie den zuvor mit dem entfernten Anwender vereinbarten Benutzernamen, dessen Login-Passwort Ihnen ebenfalls bekannt sein muss. Mit dem Parameter "-L" geben Sie Port 5901 auf dem Client-Rechner für VNC frei, den Sie vom Standardport 5900 des Server-Rechners abzweigen. SSH besitzt eine eigene Komprimierung, die Sie mit "-C" einschalten. In einem zweiten Terminal-Fenster starten Sie nun vncviewer (unter Ubuntu: xtightvncviewer) mit den von Ihnen gewünschten Parametern:

vncviewer

<
gewünschte Parameter
>
localhost:1

Tipp: Über SSH können Sie auch ohne VNC einzelne grafische Programme auf entfernten Linux-Rechnern starten. Dazu melden Sie sich zunächst per SSH mit

ssh -l

<
Benutzername
>
-C -X
<
IP-Adresse
>

an und starten dann das entsprechende Programm von der Kommandozeile.

Windows und Linux per VNC

Mit VNC können Sie auch von Linux- auf Windows-Rechner zugreifen und umgekehrt. Sie benötigen lediglich die GPL-Software TightVNC für Windows. Wollen Sie von einem Linux-Rechner auf einen Windows-PC zugreifen, starten Sie auf Letzterem nach der Installation im Startmenü unter "Programme, TightVNC, Lauch TightVNC Server" die Server-Software.

Es erscheint ein Symbol in der Taskleiste. Über dessen Kontextmenüpunkt "Properties" sollten Sie zunächst umgehend ein Passwort setzen. Über "Input Handling" können Sie noch den Zugriff des entfernten Rechners per Maus und Tastatur mit der Option "Disable remote keyboard and pointer" verhindern. Die gegenwärtige IP-Adresse des Windows-Rechners ermitteln Sie über "Start, Ausführen" mit dem Befehl "cmd" und der Eingabe "ipconfig". Nun können Sie von einem Linux-Rechner aus mit

vncviewer

<
IP-Adresse
>
:0

den entfernten Windows-Desktop auf Ihrem Linux-Rechner starten. Bei Verbindungen über das Internet verwenden Sie die gleichen Komprimierungsparameter wie im Abschnitt über Verschlüsselung beschrieben.

Umgekehrt können Sie Ihren Linux-Desktop auch unter Windows nutzen. Geben Sie dazu Ihren Linux-Desktop frei (Abschnitt über KDE), und starten Sie unter Windows den TightVNC-Viewer mit Fast Compression. Über dessen Optionen können Sie die Kompressionsrate (Abschnitt über Verschlüsselung) beeinflussen und unter "Mouse cursor" mit der Option "Let remote server deal with mouse cursor" den Mauszeiger aktivieren. Dann geben Sie die IP-Adresse des Linux-Rechners mit dem Zusatz ":0" ein. Nach einem Klick auf "OK" müssen Sie noch das Passwort nachreichen, bevor sich der Linux-Desktop in einem Fenster aufbaut.

Beachten Sie bitte, dass kostenlose VNC-Programme unter Windows allesamt auf Verschlüsselung verzichten. TightVNC sendet zwar das Anmeldepasswort verschlüsselt, die Daten während einer VNC-Session jedoch nicht.

Stets erreichbar mit Dyndns

Mit dem Dienst von Dyndns erhalten Sie einen permanenten Rechnernamen für Ihren Internet-Server, etwa meinrechner.homelinux.org. Sie müssen sich dort lediglich kostenlos anmelden und eine gültige Mailadresse angeben. Auf der Webseite finden Sie auch etliche Scripts, etwa "ddclient", die automatisch Ihre gegenwärtige Internet-IP-Adresse auslesen und am Dyndns-Server anmelden. Damit sind Sie unter Ihrem angemeldeten Rechnernamen stets erreichbar.

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation PC-Welt. (pah)