Virtual Network Computing (VNC) zeigt den Bildschirminhalt eines Servers plattformunabhängig auf einem Client an und ermöglicht dessen Fernsteuerung per Tastatur- und Mausbewegungen. Da das zugrundeliegende Remote Framebuffer-Protokoll unverschlüsselt arbeitet, ind alle Tastatureingaben des Viewers im Netzwerk einsehbar, weshalb man VNC in der Praxis immer durch SSH tunnelt.
Beim im RHEL-Umfeld bevorzugten TigerVNC werden wenigstens die VNC-Passwörter verschlüsselt übertragen. Zudem lässt sich TigerVNC durch seine Kompressionsmöglichkeiten auch über schmalbandige Verbindungen problemlos nutzen.
VNC selbst ermöglicht zunächst einmal kein Desktop Sharing, d.h. ein aktuell geöffneter (physischer) Desktop kann nicht übernommen werden. Statt dessen wird ein neuer virtueller Desktop erzeugt, was es ermöglicht, eine beliebige Anzahl Benutzer auf einer Maschine arbeiten zu lassen. Mit TigerVNC klappt aber auch Desktop Sharing: es bringt dafür einen eigenen Server mit. Mehr dazu weiter unten.
Tipp > Ein alternativer VNC-Server unter GNOME ist “Vino”.
TigerVNC Server
Die Maschine, zu der man sich verbinden möchte, muss den tigervnc
-Server ausführen, den man unter CentOS und Fedora als root wie folgt installiert:
# CentOS
yum -y install tigervnc-server
# Fedora
dnf -y install tigervnc-server
Falls firewalld
zum Einsatz kommt:
firewall-cmd --permanent --add-service=vnc-server
firewall-cmd --reload
Nun auf der Maschine mit dem Benutzer einloggen, für den die VNC-Verbindung eingerichtet werden soll. Im Beispiel für den Benutzer “linus”:
su - linus
vncpasswd
Wichtig: dieses Passwort gilt nur für die Authentifizierung gegenüber dem VNC-Server, daher sollte es sich um ein eigenständiges Passwort handeln und nichts mit dem Profil-Passwort des Benutzers zu tun haben. vncpasswd
speichert es in der Datei $HOME/.vnc/.passwd
.
Fedora mit aktiviertem Wayland: wer Wayland als Display-Manager nutzt (der Standard ab Fedora 25), erhält auf dem VNC-Client nach einem Connect nur einen schwarzen Screen. Hier hilft es, sich auf dem VNC-Server in GNOME im “GNOME on Xorg”-Modus anzumelden.
TigerVNC-Server starten – Simpel, ohne Desktop-Sharing
In unserem Beispiel führt der Benutzer “linus” folgendes Kommando aus:
vncserver :1 -geometry 800x600 -depth 24
Der Client verbindet sich zur IP-Adresse/Hostname des VNC-Servers mit der zusätzlichen Angabe “:1” (oder der Port-Angabe “:5901”).
Um den VNC-Server zu stoppen:
vncserver -kill :1
Tipp
Der VNC-Server läuft auf Port 5900 plus der Displaynummer, die beim
Start des Servers angegeben wurde.
TigerVNC-Server starten – mit Desktop Sharing, Display übernehmen
x0vncserver
ist ein TigerVNC-Server, der ein X-Display über VNC remote verfügbar macht. Im Gegensatz zu Xvnc
erzeugt er kein virtuelles Display, sondern teilt den existierenden X-Server (der in der Regel mit dem physischen Display verbunden ist). Wer sich jetzt wundert: vncserver
ist ein Perl-Script, welches den Start des eigentlichen Xvnc
TigerVNC-Servers vereinfacht.
Auch hier gilt: Wayland wird nicht unterstützt, die Fedora-Session muss mit Xorg als Display-Manager laufen.
Der direkte Aufruf:
x0vncserver -display :0 -PasswordFile /home/linus/.vnc/passwd
Die Display-Nummer bei x0vncserver
entspricht der Nummer des physischen Displays.
Das passende Systemd Unit-File:
nano /etc/systemd/system/x0vncserver.service
[Unit]
Description=Remote desktop sharing service (VNC)
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/bin/x0vncserver -display :0 -PasswordFile /home/linus/.vnc/passwd
[Install]
WantedBy=multi-user.target
systemctl enable x0vncserver
systemctl start x0vncserver
VNC-Clients
VNC-Clients unter CentOS oder Fedora sind:
- TigerVNC
- Remmina
Unter Windows empfiehlt sich der Einsatz von:
- UltraVNC
So wird beispielsweiser der TigerVNC-Client auf RHEL/CentOS/Fedora installiert:
dnf/yum -y install tigervnc
Um sich zu verbinden, ruft man den VNC-Viewer mit der gewünschten Ziel-Adresse und dem Display-Port auf:
vncviewer my_server:0
Der Client Remmina hat den Vorteil, Remote Access-Protokolle wie VNC, RDP u.a. unter einen Hut zu bringen.
VNC sicher nutzen
Um unverschlüsselte Verbindungen dauerhaft zu verhindern, ergänzt man auf dem VNC-Server die ExecStart
-Zeile:
ExecStart=/sbin/runuser ... -localhost %i ..."
Ein Client kann sich nun nur über folgenden Aufruf verbinden:
vncviewer -via linus@my_server :0
Damit wird zunächst eine SSH-Verbindung aufgebaut, über die dann die VNC-Verbindung getunnelt wird.