VNC (Virtual Network Computing) bietet eine weitere Möglichkeit, einen Remote-Desktop fernzusteuern.

VNC basiert ebenfalls auf dem Client-Server-Prinzip:

Auf dem Remote-Host läuft ein VNC-Server auf den man sich mit einem VNC-Client, dem sogenannten VNC-Viewer verbindet. Der VNC-Viewer überträgt Tastatur- und Mausereignisse an den entfernten VNC-Server, der diese Eingaben dann in der dort laufenden graphischen Oberfläche macht und nur die entsprechenden Bildschirmveränderungen zurückgibt, um Bandbreite zu sparen.

Die Datenübertragung kann dabei unverschlüsselt geschehen, was über das Internet unbedingt zu vermeiden ist! Daher muss zunächst der SSH-Server auf dem Remote-Host gestartet werden, falls noch nicht geschehen.

PrinziP: VNC-Übertragung



VNC-Server auf dem Remote Host starten

Zu Beginn der Installation sollte das Betriebssystem des Raspberry Pi aktualisiert werden:

sudo apt-get update
Mit Raspbian kommt RealVNC. Dieser VNC-Server würde sich problemlos mit

sudo raspi-config
über die Interface Options aktivieren lassen. Da RealVNC aber einigen Einschränkungen unterliegt, wird hier dagegen den TightVNC-Server installiert:

sudo apt-get install tightvncserver

Der RealVNC-Server wird dabei automatisch deinstalliert.

Eine Session würde sich mit folgendem Kommando starten lassen.

vncserver :1

Beendet wird diese Session mit:

vncserver :1 -kill
Da nun eine direkte SSL-verschlüsselte Verbindung aufgebaut werden soll, starten wir die Session mit dem Parameter "-localhost"

vncserver :1 -geometry 1920x1080 -depth 16 -name raspi -localhost

-localhost: Der Parameter verhindert, dass die VNC-Session über das Internet ungesichert aufgebaut werden kann. Es muss zuerst eine sichere SSH-Verbindung herstellt und darüber die VNC-Session betrieben werden.

-geometry: Mit diesem Parameter legt man die Auflösung des Desktops fest, die an den VNC-Client übertragen werden soll. Sinnvoll sind nur vom Client darstellbare Auflösungen. Sind die Werte zu groß, dann sind Teile des Desktops verdeckt und es muss im Fenster des VNC-Clients gescrollt werden. Soll mit Vollbild gearbeitet werden, dann muss die Auflösung des Clients eingetragen werden. Aber, je höher die Auflösung, desto größer ist auch das zu übertragende Datenvolumen. Im lokalen Netzwerk ist das weniger ein Problem, über das Internet dagegen schon.

-depth: Mit diesem Parameter legt man die Farbtiefe in Bit der zu übertragenden Bilder fest. Die beste, farblich detaillierte Darstellung bekommt man mit den Werten von 24 bzw. 32. Allerdings erfordert das eine entsprechend hohe Bandbreite bzw. Übertragungsgeschwindigkeit, um das dabei entstehende Datenvolumen übertragen zu können. In der Regel erreicht man das nur im lokalen Netzwerk. Ein Wert von 16 ist mit Sicherheit auch akzeptabel. Ein Wert von 8 das Minimum. Je geringer der Wert, desto geringer ist das Datenvolumen und desto höher ist die notwendige Bandbreite.

-name: Mit diesem Parameter legt man den Namen fest, der im VNC-Client angezeigt werden soll. Interessant ist das dann, wenn man mit mehreren VNC-Sessions zu unterschiedlichen Systemen arbeitet und die Fenster voneinander unterscheiden möchte.

SSH-Tunnel einrichten

Von Windows aus lässt sich eine SSH-Tunnel leicht mit PuTTY einrichten.

Der VNC-Port 5901 der lokalen Maschine wird per SSH auf den gleichen Port des zu steuernden Remote Host weitergeleitet (ADD anklicken vor dem Herstellen der Verbindung):

SSL-Tunnel mit Putty einrichten

Von Linux aus lässt sich der SSH-Tunnel leicht von der Konsole aus einrichten:

ssh -L 5901:localhost:5901 -N -f -l pi hostname


Öffnen der VNC-Verbindung

Auf der lokalen Maschine wird jetzt ein VNC-Client gestartet. In diesem Beispiel ist das der VNC-Viewer von TightVNC, der für verschiedene Betriebssysteme kostenfrei heruntergeladen werden kann.


Mit SSL abgesicherte VNC-Verbindung mit TightVNC herstellen

Abschließend authentifiziert man sich als VNC-User:

Authentifizierung als VNC-User



Remote Deskop mit TightVNC Viewer


Um das Kopieren von Text mit "Copy & Paste" in beide Richtungen zu ermöglichen muss 
das Paket autocutsel auf dem Raspberry Pi installiert werden:

sudo apt-get install autocutsel
Dann wir die Datei /home/pi/.vnc/xstartup editiert:

nano /home/pi/.vnc/xstartup
und

autocutsel -fork
hinzugefügt:

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey

autocutsel -fork

#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

#x-window-manager &

# Fix to make GNOME work

export XKL_XMODMAP_DISABLE=1

/etc/X11/Xsession

Dann muss der VNC Server neu gestartet werden:


vncserver –kill :1 (pick your display)
vncserver :1 -geometry 1920x1080 -depth 16 -name raspi -localhost

https://www.linode.com/docs/networking/ssh/using-ssh-on-windows/

https://www.childs.be/blog/post/remove-real-vnc-from-raspberrypi-pixel-and-install-tightvnc

https://raspberrypi.stackexchange.com/questions/4474/tightvnc-copy-paste-between-local-os-and-raspberry-pi

https://www.elektronik-kompendium.de/sites/raspberry-pi/2012011.htm

https://www.raspberrypi.org/documentation/remote-access/vnc/


Last modified: Thursday, 12 December 2019, 10:53 PM