Butschek.de

Warnung: Diese Seite ist eine statische Kopie eines früher betriebenen Blogs. Es findet keine Aktualisierung mehr statt. Kommentare und die Suche funktionieren nicht.

Linux, Server & Co

VNC4Server – VNC-X-Server

3 comments

VNC steht für Virtual Network Computing und ist ein Protokoll, um KVM-over-IP softwareseitig zur Verfügung zu stellen. Die wohl üblichste Nutzung von VNC ist die Fernsteuerung unter Windows: Einfach auf einem PC einen VNC-Server installieren und dann von jedem anderen PC aus mit dem VNC-Viewer den Server fernsteuern. Dies wird in Schulen gerne zur Überwachung, in Schulungen zur Hilfe und in Firmen zur Steuerung des günstigen Windows-Servers eingesetzt. Auf der Homepage von RealVNC kann man sich die Software frei herunterladen.

Was ist VNC4Server?

Diese Software verfolgt einen sehr interessanten Ansatz. Unter Linux ist für den Betrieb der grafischen Oberfläche stehts ein X-Server nötig. Er ist für die Anzeige des Bildes auf dem Bildschirm verantwortlich. Normalerweise startet er einen Window-Manager, der dann die grafische Oberfläche für den Benutzer zur Verfügung stellt. Der Benutzer wiederrum startet seine Anwendungsprogramme.

VNC4Server ist nun ein solcher X-Server, jedoch zeigt er die Ausgabe nicht auf einem physikalischen Bildschirm an. Stattdessen erlaubt er es, sich mit einem VNC-Viewer auf den Linux-Server zu verbinden und so die Ausgabe über’s Netz anzuzeigen.

Der große Vorteil dabei ist die Geschwindigkeit: Ein kompletter X-Server, welcher die komplette Grafik für den Bildschirm aufbereiten muss, ist groß und langsam. Wenn dann ein VNC-Server die Ausgabe abfangen muss, um sie per VNC-Protokoll über das Netzwerk anzuzeigen, kostet das erneut Resourcen und damit Leistung.

VNC4Server dagegen gibt sich direkt als X-Server aus und erhält damit seine Bilddaten direkt von der Applikation bzw. vom Window-Manager. Die Daten werden direkt für das VNC-Protokoll aufbereitet, was deutlich schneller geht, weniger Leistung benötigt und auch Platz auf der Festplatte spart. Eine vollständige Installation inklusive Window-Manager, einem Spiel zum testen und einem eterm-Terminal beaucht nur knapp 100 MByte auf der Platte.

Wozu wird dies benötigt?

Fans der Shell werden hier wenig Sinn in dieser Software sehen, schließlich läßt sich ein Server auch ohne VNC direkt über SSH fernsteuern. Doch gerade Einsteiger haben oft den Wunsch, eine einfache grafische Oberfläche für den Server zu haben.

Doch es gibt auch andere Anwendungsgebiete. Mein Cousin hat mich hier mit einer solchen überrascht: Er betreibt einen Teamspeak Bot, der jeodch per Mouse konfiguriert und eingelogt werden muss. Unter Windows kein Problem, doch wollte er seinen PC nicht 24/7 laufen lassen. Unter Linux wäre mir auf der Shell keineMöglichkeit eingefallen, wie man sowas realisieren könnte. Durch VNC4Server war dies kein Problem mehr.

Installation

Die Installation ist denkbar einfach, sofern die Distribution die nötigen Pakete liefert. Der hier beschriebene Weg funktioniert unter Debian sowie Ubuntu. Wir benötigen zum einen das Paket vnc4server sowie einen Window-Manager. Natürlich lassen sich Gnome und KDE verwenden, doch für den Server sollte etwas kleines einfaches genügen. Ich habe mich hier für fluxbox entschieden. Weiterhin sollte noch mindestens ein Programm zum Testen dazu. Hier bietet sich xbubble an: Klein, einfach, demonstriert aber dennoch, dass es funktioniert.

Also ab zur Installation:

  aptitude install vnc4server fluxbox xbubble

Nach der Installation ist erstmal ein Kennwort für die VNC-Verbindung zu setzen:

  vnc4passwd

Nun kann der VNC-Server auch schon gestartet werden. Dabei sollte man, wenn man kein Startscript hat, die Auflösung mit Farbtiefe mit angeben, da der X-Server ja keinen physikalischen Bildschirm nutzt und damit auch nicht automatisch die Auflösung der Grafikkarte nutzt.

  vnc4server -geometry 950x700 -depth 24 -name "MeinServer"

Die eigenartige Auflösung von 950×700 nutze ich, damit es sich auf meinemBildschirm (1024×768) schön als Fenster darstellt. Der VNC-Server startet nun eine Instanz und bezeichnet sie als Screen 1. Dementsprechend wird auch der Port 5901 (statt wie bei VNC üblich 5900) verwendet. Mit einem VNC-Viewer läßt sich nun der Server ansprechen:

  vncviewer servername:5901
  (passwort)

Screenshot

Wie im Screenshot zu sehen, läßt sich der Server nun wie ein Arbeitsplatz nutzen, wobei die Geschwindigkeit auch bei einer mittelmäßigen Anbindung ins Internet brauchbar ist. Wem das Aussehen von Fluxbox nicht gefällt, kann es im Menü ändern, das man über die linke Mousetaste erreicht:

  Menü - Styles - Twice

Nun kann man die ersten Programme starten, zum Beispiel unser eben

installiertes xbubble:

  Menü - Spiele - Tetris-artig -> XBubble

Fernsteuerung per Browser

Noch schöner finde ich die Möglichkeit, per Browser auf die grafische Oberfläche zuzugreifen. Hierzu bietet VNC einen HTTP-Server, der einen VNC-Viewer in Form eines Java-Programms ausliefert. Damit genügt ein Klick auf die URL im Browser und schon hat man nach Eingabe des Passwortes Zugriff auf denServer, ohne lokal zusätzliche Software zu benötigen. Das einzige was hierzu nötig ist, ist die Installation des Java Paketes:

  aptitude install vnc-java

Nun muss der VNC-Server gestoppt und neu gestartet werden. Solange wir uns noch kein Start-Stop-Script geschrieben haben, machen wir es eben von Hand:

  killall Xvnc4
  vnc4server -geometry 950x600 -depth 24 -name "MeinServer"

Nun starten wir den Browser. Normalerweise ist das VNC-Webinterface auf Port 5800 zu finden. Da wir unseren Screen 1 auf Port 5901 finden, liegt das passende Webinterface auf Port 5801.

  firefox http://servername:5801/

Es startet nun der Java VNC Viewer. Nach Eingabe des Passwortes sehen wir dann den Bildschirm des Servers:

...im Browser

Webmail mal anders :-)

Richtig witzig fand ich die Idee, VNC4Server zu verwenden, um Mini-Games und Mailprogramm per Browser zu nutzen. So werden aus den üblichen Linux-Spielenschnell Browserspiele und aus Thunderbird wird plötzlich ein vollwertiges Webmail-Programm mit allen benötigten Funktionen, ganz ohne HTML.

Ein Wort zur Sicherheit

VNC verschlüsselt die übertragenen Daten nicht. Daher sollte man es beimEinsatz im Internet über VPN oder einen SSH-Tunnel nutzen. Außerdem ist die Software nicht Multiuserfähig. Klar, man könnte XDM vorschalten und so mehreren Usern Zugriff erlauben, das ist Sicherheitstechnischauf einem Server aber kaum zu vertreten, sofern das System nicht explizit dafür ausgelegt wurde.

Insofern ist VNC4Server zwar ein nettes Tool, für den täglichen Einsatz einesAdministrators sollte aber SSH vorgezogen werden, sofern dies möglich ist.

Written by Michael Butschek

April 21st, 2009 at 9:32 pm

Posted in

3 Responses to 'VNC4Server – VNC-X-Server'

Subscribe to comments with RSS or TrackBack to 'VNC4Server – VNC-X-Server'.

  1. Ich kann mich bei diesem Beisspiel immer nur als Root einloggen gibt es die Möglichkeit USER anzulegen oder bestehende USER zu verwenden denn mein Freund Heinz muss noch mit einloggen kennt sich aber nicht so gut aus auf dem Debian. Wie richtet man mehrerer Logins über SSH ein?
    Mein Login kann nur den root und es hat auch keine Auswahl der USER beim Einloggen. mfg weakbit

    weakbit

    16 Feb 10 at 08:43

  2. Ich habe es noch nie versucht, aber möglich sollte es sein.

    Der Login-Screen kommt vom KDM, GDM oder XDM. Wenn der VNC-Server nicht entsprechend konfiguriert ist, wird natürlich auch kein Display Manager (DM) gestartet und der VNC-Server läuft mit dem User, der ihn startet, als würde der User ’startx‘ aufrufen.

    Im Home-Verzeichnis findest du im .vnc Verzeichnis die Datei xstartup, in der unter anderem konfiguriert ist, welches Kommando VNC starten soll. Ich würde ich einen DM eintragen und testen.

    Dennoch will ich nochmals anmerken, dass dies wirklich keine brauchbare Lösung für den Multiuser-Einsatz ist. Alleine aufgrund der Sicherheit würde ich diese Lösung nicht empfehlen.

    Mike

    10 Mrz 10 at 09:38

  3. Danke für die Info: das in /home/weakbit/.vnc/xstarup habe ich schon alles mögliche versucht aber nichts da kann man eintragen was man will er lässt einem immer nur mit „root“ einloggen. was soll den im xstart stehen? es gibt kein beispiel das man für einen user eingeben kann.
    Da steht:
    #!/bin/sh

    # Uncomment the two following lines for normal desktop
    unset SESSION_MANAGER
    exec sh /etc/X11/xinit/xinitrc

    [ /home/weakbit/.vnc/xstart] && ‚/home/weakbit/.vnc/xstart‘
    [-r $HOME/.Xresources ] && xrdb $HOME/.Xresources

    user = weakbit

    vncconfig -iconic &
    x-terminal-emulator -geometry 80×24+10+10 -ls – title „$VNCDESKTOP Desktop“ &
    „$VNCDESKTOP Desktop“ &
    # x-window-manager &
    genome-session &

    bitte was soll ich das verändern und vor allem wie ich weis nicht mal was das alles zu bedeuten hat?

    weakbit

    15 Mrz 10 at 20:38

Leave a Reply