Remote Access und Desktop Sharing mit TigerVNC¶
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, sind 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.