Um einen VNC-Server unter Fedora-Linux laufen zu lassen sind nur wenige Schritte erforderlich, danach lässt sich das System plattformübergreifend inkl. GUI verwalten wobei hier auch ein eigener (vom lokalen Monitor unabhängiger) X-Server läuft.


Benötigte RPM-Pakete

Die notwendigen Pakete lassen sich problemlos per YUM installieren:

  • vnc (Viewer-Applikation)
  • vnc-server (Server)
  • vnc-libs (Bibliotheken)
yum install vnc vnc-server vnc-libs

VNC-Server konfigurieren

  • Festlegen eines Passwortes
    Im Terminal "vncpasswd /root/.vnc/passwd" eingeben und gewünschtes Passwort bestätigen
    Probleme kann es hier ggf. mit der Länge und der Existenz des Ordners /root/.vnc geben.
     
  • Bearbeiten der Konfiguration
    "/etc/sysconfig/vncservers" mit folgendem Beispielinhalt

    VNCSERVERS="1:root"
    VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -rfbport 5900 -depth 16"

    "/root/.vnc/xstartup" mit folgendem Inhalt um den gewohnten Window-Manager zu benutzen
    Die Datei benötigt Ausführ-Berechtigungen

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

Zugriff auf die lokale X-Session

Mittlerweile ist es auch problemlos möglich die Ausgabe des Standard-Displays über VNC zur Verfügung zu stellen, dazu sind lediglich zwei Einträge in der X11-Konfiguration (/etc/X11/xorg.conf) vorzunehmen.

  • Im Abschnitt Section "Module" folgende Zeile hinzufügen:
    Load "vnc"
  • Im Abschnitt Section "Screen" folgende Zeile hinzufügen:
    Option "passwordFile" "/root/.vnc/passwd"
  • Im Terminal als root wie auch oben beschrieben das Passwort generieren:
    "vncpasswd /root/.vnc/passwd"
  • X-Server neu starten (STRG+ALT+Backspace)
  • Damit stellt der X-Server unabhängig von einem somit nicht nötigen VNC-Server auf Port 5900 die lokale Sitzung per VNC zur Verfügung.

VNC per SSH verschlüsseln

Normalerweise läuft VNC unverschlüsselt, was über das Internet nicht zu empfehlen ist.
SSH stellt mit seinen Tunnel-Funktionen aber eine simple und sichere Möglichkeit zur Verfügung jedes TCP-Protokoll verschlüsselt zu übertragen.

Mit folgendem kleinen Shellscript wird beispielsweise eine SSH-Verbindung zum Heimserver hergestellt welche eine verschlüsselte Verbindung zum dortigen Port 5900 herstellt und auf dem lokalen Rechner auf Port 5903 bereitstellt.

#! /bin/bash
ssh -C -p 22 -f -L5903:127.0.0.1:5900 root@local.dksoft.net sleep 30
vncviewer -passwd=/home/dksoft/.vnc/srv-dksoft.pwd geometry=1400x810 127.0.0.1:5903

Im Beispiel wird im Vorfeld mittels "vncpasswd /home/dksoft/.vnc/srv-dksoft.pwd" das Passwort für die VNC-Verbindung im lokalen Benutzerprofil des Clients verschlüsselt gespeichert, somit ist nur mehr die Eingabe des SSH-Passworts nötig.

Der grosse Vorteil dieser Methode liegt darin dass der Port 5900 am Server geschlossen bleiben kann und somit erst durch die erfolgreiche SSH-Verbindung erreichbar wird. Wenn man zusätzlich noch mit SSH-Zertifikaten arbeitet lässt sich das Ganze sehr komfortabel und sicher einrichten.

Einzig die Stabilität des X-Servers scheint hin und wieder etwas suboptimal zu sein, das mag hier aber auch an der langen Laufzeit des Rechners mit zwischenzeitlichen Experimenten mit NX-Remote-Desktop und diversen Devel-Paketen liegen.