updated:  2026 24. May
published:  2023 04. February

VNC

Gnome's VNC Server Vino

Das Virtual Network Computing (VNC) ist ein Verbindungsdienst und erlaubt es einen lokalen Rechner (Client) einen entfernten Rechner anzuzeigen und ggf. fern (Remote) zu steuern. Im Gegensatz zu anderer Fernwartungssoftware ist VNC plattformunabhängig.

Vino-VNC-Server

Vino ist der alte GNOME-VNC-Server und wird mit dem gleichnamigen Packet installiert. Vino benötigt eine laufende X11-Session. Welches grafische Sitzungsprotokoll gestartet ist, erfährst du mit:


 # Sitzungsprotokoll checken, Ergebnis muss Type=x11 sein
 loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type -p Id

Das grafische Sitzungsprotokoll Type=x11 muss für Vino gestartet sein. Ist das nicht der Fall, musst du diesen beim Logging im grafischen Display-Manager auswählen (z.B. Ubuntu Xorg). Auf Konsolenebene (also auch über eine SSH-Verbindung) kannst du die aktuelle grafische Sitzung anhalten und mit X11 neu starten.

Informationen anzeigen.

 # Ist gdm3 der aktuelle Display Manager
 systemctl status display-manager
 cat /etc/X11/default-display-manager
 ls -l /etc/systemd/system/display-manager.service

 # Auf dem System installierte Sessions anzeigen
 grep '^Name=' /usr/share/{x,wayland-}*sessions/*.desktop

Grafisches Sitzungssprotokoll ändern.

 # Wayland auf false setzen in /etc/gdm3/custom.conf
 sudo sed -i 's/^#WaylandEnable=false/WaylandEnable=false/' /etc/gdm3/custom.conf

 # Neustart grafische Systen
 sudo systemctl restart display-manager.service
 # oder mit 
 sudo systemctl restart gdm.service

Im Weiteren sollte der Vino-Server nicht mit masked blockiert sein. Das überprüfst du mit:


 systemctl --user list-unit-files | grep vino
 # Ergebnis
 # vino-server.service	masked enabled -> falsch

 # Vino-Server desmaskieren
 systemctl --user unmask vino-server
 # Ergebnis
 # vino-server.service	static -> richtig

Folgende Befehle starten den Vino-VNC-Server:


 # Server Start, Status
 systemctl --user restart vino-server # VNC starten als Benutzer
 systemctl --user status  vino-server
 systemctl --user stop    vino-server
 
 /usr/lib/vino/vino-server --sm-disable	# VNC starten als root

Autostart aktivieren.

 cp /usr/share/applications/vino-server.desktop ~/.config/autostart/

Sitzungsprotokolle im System

Welche weiteren Sitzungsprotokolle im System installiert sind, erfährst du mit:


 # installierte Sessions anzeigen
 grep '^Name=' /usr/share/{x,wayland-}*sessions/*.desktop

 # verwendeter Display-Manager
 systemctl status display-manager
 cat /etc/X11/default-display-manager
 ls -l /etc/systemd/system/display-manager.service

Netzwerk, Port


 netstat -tulpen | grep -i vino		# Prüfe ob Vino gestartet ist
 pgrep   -a vino			# Prüfe mit ps
 netstat -nl     | grep -i 590		# Prüfe Port 590x 
 ip addr				# Lokale IP-Adresse ermitteln
 ifconfig				# Lokale IP-Adresse ermitteln

Server-Einstellungen

Typischerweise werden unter Gnome alle Konfigurationseinstellungen in Schemas gespeichert und verwaltet. So auch für den GNOME-VNC-Server Vino. Mit einem der folgenden Programme können diese vorgenommen werden:


 # Vino Einstellungen vornehmen mit:
 gsettings       (terminal)
 dconf           (terminal)
 dconf-editor    (gui)

Einstellungen mit dconf-editor (Gui)

Die Einstellungen im dconf-editor sind unter folgendem Zweig zu finden: «Menu: org → gnome → desktop → remote‍-‍access». Sollte dieser Zweig nicht vorhanden sein, dann ist das Packet vino zu installieren.

Hinweis: Vino ist der alte VNC-Server in Gnome. Die Einstellungen in «Menu: org → gnome → desktop → remote‍-‍desktop → vnc» und «Menu: org → gnome → desktop → remote‍-‍desktop → rdp» haben keine Auswirkung auf den Vino-Server. Sie sind nur für das neuere GNOME Remote Desktop zuständig und können für Vino auch abgeschaltet werden.

Einstellungen mit gsettings (console)

Optionen auf der Konsole ausgegeben:


 # Listet alle Schlüssel auf
 gsettings list-keys		org.gnome.Vino

 # Listet Schlüssel und Belegung auf
 gsettings list-recursively 	org.gnome.Vino | column -t -s " "

 # Listet Schlüssel und Belegung auf
 for i in $(gsettings list-keys org.gnome.Vino); do echo -e "$i:$(gsettings get org.gnome.Vino $i)" | awk -F ":" ' {printf "%30s   \t", $1; printf "%s \n", $2}' ; done

Für den Server stehen folgende Optionen bzw. Einstellungen zur Verfügung:

Option Standardwert Beschreibung
alternative‍-‍port 5900
authentication‍-‍methods [‘vnc’]
disable-‍background false Hintergrundbild abschalten. Sollte auf false bleiben, da ggf. der Vino-Server wegen der Verwendung alter Schemas und Schlüssels nicht startet.
disable‍-‍xdamage false XDamage - Erweiterung von Xorg abschalten bei Problemen mit Videotreiber.
icon-visibility ‘client’
lock‍-‍screen‍-‍on‍-‍disconnect false
mailto ''
network-interface ''
notify-on-connect true Eine Meldung wird auf dem Desktop des Server angezeigt.
prompt‍-‍enabled true Der Benutzer muß die Verbindung zum Client mit einem Mausklick annehmen.
require-‍encryption false Verschlüsselung an/abschalten (unsicher, da zu alt). Auf false setzen und stattdessen SSH-Tunnel verwenden.
use-alternative-port false
use-upnp false
view-only false
vnc-password ‘keyring’

Minimalkonfiguration zum Testen

Einstellungen auf dem Remote-PC (Vino-Server)

 gsettings set org.gnome.Vino authentication-methods 	"['none']"
 gsettings set org.gnome.Vino prompt-enabled 		false
 gsettings set org.gnome.Vino require-encryption   	false
 gsettings set org.gnome.Vino disable-background 	false
 
 systemctl --user restart vino-server.service

Start und Verbindung auf dem Client mit:

 vncviewer -quality 0 -bgr233 -depth 8 <ip-adresse>

Mit der Taste [F8] öffnet sich ein Popup-Menu des VNC-Viewers. Damit kann der Viewer beendet werden.

Konfiguration mit Paßwort

Für die Verbindung mit Paßwort ist der Schalter authentication-methods wichtig und das VNC-Paßwort muss gesetzt werden.

Einstellungen auf dem Remote-PC (Vino-Server)

 gsettings set org.gnome.Vino authentication-methods 	"['vnc']"
 gsettings set org.gnome.Vino prompt-enabled 		false
 gsettings set org.gnome.Vino require-encryption   	false
 gsettings set org.gnome.Vino disable-background 	false
 gsettings set org.gnome.Vino vnc-password 		$(echo -n 'test123' | base64)

Start und Verbindung auf dem Client mit:

       vncviewer -quality 0 -bgr233 -depth 8 -compresslevel 5 -encodings tight <ip-address>
 xtightvncviewer -quality 0 -bgr233 -depth 8 -compresslevel 5 -encodings tight <ip-address>

Verbindung mit SSH-Tunnel

Die Option -via baut automatisch eine Verbindung mit SSH-Tunnel auf. Dazu muss auf der Maschine des VNC-Server (Remote-PC) ein SSH-Server (Port 22 o.a.) laufen. Nach dem Aufruf ist als Erstes das SSH-Passwort des Benutzers einzugeben. Als Zweites wird das VNC-Passwort verlangt, das mit der Option gsettings set org.gnome.Vino vnc-password gesetzt wurde.


 xtightvncviewer -quality 0 -bgr233 -depth 8 -compresslevel 7 -encodings tight -via <user-name>@<ip-address> localhost:0

Mit der Umgebungsvariable VNC_VIA_CMD können weitere SSH-Optionen übergeben werden.


 export VNC_VIA_CMD="/usr/bin/ssh -f -v -L %L:%H:%R %G sleep 20"

Ein SSH-Tunnel kann auch manuell über zwei Konsolen erfolgen.


 # Konsole 1
 ssh -v -L 5900:localhost:5900 <user-name>@<ip-address>

 # Konsole 2
 xtightvncviewer localhost:0

VNC-Clients

Ein VNC-Client ist ein Programm, das es gestattet, auf einem PC mit installiertem VNC-Server zuzugreifen bzw. dessen Inhalt anzuzeigen. Es existiert eine Vielzahl an freien VNC-Clients z.B. xtightvncviewer oder Remmina.

VNC mit Remmina

Benötigt werden die IP-Adresse, der Benutzername sowie der Legitimierungstyp (SSH-Agent). Ist auf dem VNC-Server die Option prompt-enabled auf TRUE gesetzt, dann erscheint eine Bildschirmnachricht auf dem VNC-Server und der Benutzer muss die Anmeldung mit einem Mausklick bestätigen.

Alternativer Text
 Grundlegende Einstellungen 
Alternativer Text
 SSH-Tunnel 
Stichworte (tags)