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.


Related Posts

Published by

Sandro Lang

Sandro Lang

Just another HTMLy user.