Raspberry Pi OS: VNC Zugriff mit TigerVNC

Hier gibt's Anleitungen und Themen dazu.
Antworten
Benutzeravatar

Themenstarter
Outi
Administrator
Administrator
Beiträge: 481
Registriert: 13.02.2015, 22:24
RasPis: 10+
Kontaktdaten:

Raspberry Pi OS: VNC Zugriff mit TigerVNC

Beitrag von Outi »

History:
23.05.2024 - Erste Veröffentlichung



Hinweis:
Diese Anleitung/Information erhebt keinen Anspruch auf Vollständigkeit und kann Fehler enthalten und die Benutzung erfolgt auf eigene Gefahr.
Es wird keinerlei Haftung für Schäden und/oder Datenverluste übernommen.

Info:
Diese Anleitung setzt ein fertig konfiguriertes Raspberry Pi OS mit grafischer Oberfläche voraus.


Wer heute auf den Raspberry Pi von außen auf die grafische Oberfläche zugreifen möchte, ohne dafür Monitor/Maus/Tastatur direkt am Pi nutzen zu benutzen, hat mehrere Möglichkeiten:
  • XRDP
  • RealVNC
  • TigerVNC
  • Raspberry Pi Connect
Dazu möchte ich ganz kurz auf die einzelnen Arten eingehen:

XRDP
Bei dieser Art des Zugriffs installiert man auf dem Pi das gleichnamige Paket und kann dann z.B. über den in Windows 10/11 enthaltenen Remote Desktop Client eine Verbindung herstellen.
Diese Version des Zugangs habe ich früher gerne genutzt, da es recht unkompliziert ist/war und auch unter dem neuen grafischen System Wayland recht gut zu funktionieren scheint, zumindest kann ich es nach wie vor auch damit noch nutzen.
Infos: Externer Link https://www.xrdp.org/

RealVNC
Wenn beim Pi von VNC geredet/geschrieben wird, ist meist das von RealVNC realisierte VNC gemeint, das auch schon seit ewigen Zeiten im Raspberry Pi OS zu finden und/oder ggf. leicht nachzuinstallieren ist.
Hierbei ist zum Betrieb der VNC-Server meist schon vorinstalliert und für den Client gibt es je nach System die passende Clientsoftware.
Bzgl. dem neuen Wayland System auf dem Pi kann man von Zeit zu Zeit bei RealVNC schauen, wie die Unterstützung dort vorangeschritten oder bereits verwirklicht wurde.
Infos: Externer Link https://www.realvnc.com/de/

TigerVNC
Bei diesem Gespann aus Server und Client handelt es sich um System, dass bereits wunderbar mit der X11 Alternative Wayland arbeitet.
Auch die Erweiterung LabWC (angelehnt an OpenBox unter X11 / die auf dem Pi nachinstalliert werden kann) scheint bereits zu funktionieren.
Für mich ist TigerVNC daher momentan die erste Wahl und wird in dieser Anleitung auch beschrieben.
Infos: Externer Link https://tigervnc.org/

Raspberry Pi Connect
Dieses neue System (aktuell noch BETA) ist im OS nachinstallierbar und am ehesten so beschreibbar:
Hierbei wird statt mit einem Client einfach per Browser auf den Pi zugegriffen.
Um diesen Service zu nutzen, ist eine Registrierung des Pis bei der Foundation notwendig, vergleichbar mit TeamViewer oder Anydesk.
Man kann damit weltweit auf seinen freigegebenen Pi zugreifen, die Verbindung wird über die Foundation hergestellt.
Trotzdem bleibt zu bedenken, dass hier auch Daten (wie auch bei TV oder AD) über den Diensteanbieter laufen.
Wer das nicht möchte, sollte also zu Diensten greifen, die Direktverbindungen zwischen Pi und Client herstellen.
Website dazu von der Foundation: Externer Link Raspberry Pi Connect


Weitere Services wie TeamViewer, Anydesk und Co. lasse ich außen vor, da das eher in professionelleren Umgebungen genutzt wird und weitere (auch kostenpflichtige) Services hier meist nicht notwendig sind, wenn man mal eben nur per Fernzugriff auf den Pi schauen möchte.


Doch nun geht es an die Installation:

Wie immer gilt: System aktualisieren

Code: Alles auswählen

sudo apt update && sudo apt full-upgrade -y
Danach den Server installieren:

Code: Alles auswählen

sudo apt install tigervnc-standalone-server -y
Um den Server nun im lokalen Netz aufrufen zu können, muss noch ein Konfigurationseintrag hinzugefügt werden:

Code: Alles auswählen

sudo nano /etc/tigervnc/vncserver-config-mandatory
In dieser Datei nach unten scrollen bis zu diesem Abschnitt:

Code: Alles auswählen

# $localhost should the TigerVNC server only listen on localhost for
#            incoming VNC connections.
#
# Example: $localhost = "yes";
# Example: $localhost = "no";
Unter diesen Block die passende Zeile darunter setzen:

Code: Alles auswählen

$localhost = "no";
Also so sieht das dann fertig aus:

Code: Alles auswählen

# $localhost should the TigerVNC server only listen on localhost for
#            incoming VNC connections.
#
# Example: $localhost = "yes";
# Example: $localhost = "no";
$localhost = "no";
Dann die Datei speichern und verlassen.

Der Zugriff auf den TigerVNC Server benötigt ein Passwort, welches wir als nächstes vergeben:

Code: Alles auswählen

sudo tigervncpasswd
Dies geben wir dann 2x ein (1x Vergabe, 1x Verifizierung).

Danach erscheint noch die Frage, ob wir ein "Nur-Ansicht-Passwort" festlegen möchten:

Code: Alles auswählen

Would you like to enter a view-only password (y/n)?
Das verneinen wir mit der Eingabe von n, was nach der Eingabe auch nochmal bestätigt wird.

Jetzt starten wir den Server mit seinen neuen Einstellungen:

Code: Alles auswählen

tigervncserver
Folgende Anzeige sagt uns auch, auf welchem Port wir den Server finden:

Code: Alles auswählen

New Xtigervnc server 'raspberrypi:1 (pi)' on port 5901 for display :1.
Use xtigervncviewer .... usw. usf.
Also loggen wir uns später mit dem User pi und dessen Passwort über den Port 5901 ein.

Nun benötigen wir für den PC, von dem wir darauf zugreifen wollen, noch den passenden Client.
Diesen finden wir auf der entsprechenden GitHub Seite:

Externer Link https://github.com/TigerVNC/tigervnc/releases

Bild

Hier habe ich nun keinen Direktlink platziert, da sich die Version von Zeit zu Zeit ändert.
Das ist aber kein Problem.

Auf der momentan aktuellen Versionsseite befindet sich beispielsweise der folgende Link:

Externer Link https://sourceforge.net/projects/tigervnc/files/stable/1.13.1 <= Beispiel !! / Bitte die aktuellste Version nehmen !!

Bild

Dieser bringt uns nun zur Auswahl der Clients zu den verschiedenen unterstützen Betriebssystemen.

Dort dann den passenden Client durch Klick darauf herunterladen:

Für Windows 10/11 z.B.: vncviewer64-1.13.1.exe <= Beispiel !! / Bitte die aktuellste Version nehmen !!

Diese Datei am besten dort speichern, wo man sie leicht wiederfindet, denn diese kann direkt durch Doppelklick gestartet werden.

Nach dem Start erscheint die recht übersichtliche Clientoberfläche:

Bild

Wie auf dem Bild zu sehen ist, habe ich hier den Hostnamen meines Raspberry Pi eingetragen.
Wer hier ggf. Probleme hat, kann stattdessen auch die IP Adresse eingeben, die der Pi am Router bekommen hat.

Ganz wichtig: Der zuvor wie beim Start des Servers angezeigte Port muss mit angegeben werden !!
Also hier in meinem Beispiel: raspberrypi:5901

In den Options können noch weitere Einstellungen vorgenommen werden.
Wer nur intern im eigenen Netz arbeitet, kann die Voreinstellungen quasi so lassen, wie sie sind.
Bei Arbeiten von Außerhalb sollten auf jeden Fall die Sicherheitseinstellungen angepasst werden.
Und der Port müsste ebenfalls im Router freigegeben werden, was aber ausdrücklich nicht zu empfehlen ist !!
Dann lieber von außen per VPN Verbindung ins Netzwerk verbinden und dann den Client so nutzen, wie im internen Netz.

Was allerdings doch interessant in den Options ist:
  • Options => Input => Keyboard => Menu key => F8
  • Options => Display => Display mode => je nach Wunsch
Beim ersten Punkt wird die Menütaste festgelegt (F8 = Standard), die man im Betrieb nutzen kann, um diverse Änderungen in den Optionen online durchzuführen.
Beim zweiten Punkt kann man den gewünschten Bildschirmmodus als Standard beim Öffnen festlegen.

Nach dem Klick auf Connect erscheint die Abfrage nach dem Passwort, was wir nach der Installation des Servers festgelegt haben:

Bild

Dass die Verbindung nicht sicher sei, kommt daher, weil wir die Verbindung auch nicht wirklich abgesichert haben, was aber im eigenen Netzt nicht weiter stört, wenn man den Zugang nicht vor Fremden (im eigenen Netz, wie z.B. Besuch) schützen muss.

Nach der Eingabe des Passworts und dem anschließenden Klick auf OK erscheint die grafische Oberfläche vom Pi OS:

Bild

Dies ist ein Screenshot im Fenstermodus unter Windows 11.
Diesen Fenstermodus habe ich gewählt, da ein Screenshot im Vollbildmodus weitaus aufwändiger wäre.
Oben link im Fenster steht daher nochmals der Hostname des Pi un dder aktuell benutze User (raspberrypi / pi).
Das verschwindet, wenn wir per F8 in den Optionen auf den Vollbildmodus umschalten.

Das darunter erschienene kleine VNC config Fenster können wir per Rechtsklick Fenster schließen auf den Namen in der Leiste schließen.

Dieses Beispiel geht also vom User pi aus.
Wenn wir uns als User root oder einem anderen User anmelden möchten, müssen wir eine Instanz des Servers vom gewünschten User aus starten.
Beim User root reicht der Start des Servers mit dem Voransetzen von sudo, also so:

Code: Alles auswählen

sudo tigervncserver
Wenn wir uns jetzt einloggen, sind wir automatisch als User root eingeloggt.
Wird ein anderer User bevorzugt, kann dann eben eine Instanz entweder direkt in dem eingeloggten User gestartet werden oder wir nutzen halt wieder den Befehl sudo davor, z.B.:

Code: Alles auswählen

sudo -u user tigervncserver
user ist hierbei durch einen vorhandenen User zu ersetzen und ggf. wird auch nach dessen Passwort gefragt.

Info:
Es können auch mehrere Instanzen des Servers parallel ausgeführt werden.
Dabei ist zu beachten, dass jede Instanz einen eigenen Port bekommt, der aufwärts gezählt wird, also ab 5901, 5902, ....

Hinweis:
Der TigerVNC Server wird nach dem Booten nicht automatisch gestartet, sondern muss für die Benutzung manuell mit dem entsprechenden User gestartet werden.
Sicherlich kann dies auch automatisiert werden aber in der Zeit, während ich diese Anleitung erstellt habe, hat es sich herausgestellt, dass ein manuelles Starten auch seine Vorzüge hat und dadurch auch keine mehrfache Ressourcen verbrauchende Instanzen erzeugt.

Trotzdem kann man natürlich auch TigerVNC automatisch starten lassen.
Dazu müssen wir in der Konfiguration auch den/die User anlegen, mit denen nachher auf den Server zugegriffen werden soll.
Wir legen also für den gewünschten User eine eigene Instanz an, die dann beim Booten gestartet werden soll.

Dazu öffnen wir folgende Datei:

Code: Alles auswählen

sudo nano /etc/tigervnc/vncserver.users
Diese Datei sieht dann so aus:

Code: Alles auswählen

# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
Dort fügen wir also die Displaynummer für unseren User hinzu, in dem Fall pi zu :1.
Das sieht fertig dann so aus:

Code: Alles auswählen

# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
:1=pi
Das Ganze aktivieren wir noch entsprechend mit der passenden Displaynummer:

Code: Alles auswählen

sudo systemctl enable tigervncserver@:1.service
Und starten den Server:

Code: Alles auswählen

sudo systemctl start tigervncserver@:1.service
Das sollte dann für jeden weiteren User (mit eigener Displaynummer) wiederholt werden, falls gewünscht.

Jetzt den Pi rebooten und testen:

Code: Alles auswählen

sudo reboot
Deaktivieren kann man diesen automatischen Start wieder mit den folgenden Befehlen:

Code: Alles auswählen

sudo systemctl stop tigervncserver@:1.service

Code: Alles auswählen

sudo systemctl disable tigervncserver@:1.service
Möchte man für jeden User ein eigenes Passwort für den VNC Zugriff vergeben, sieht der Befehl dann so aus:

Code: Alles auswählen

sudo -u user tigervncpasswd
user ist hier wieder mit einem im System vorhandenen User zu ersetzen.

Damit das neue Passwort funktioniert, muss der Server beendet und neu gestartet oder der Pi neu gestartet werden.

Um die laufenden Instanzen anzuzeigen, hilft folgender Befehl:

Code: Alles auswählen

tigervncserver -list
Ergibt z.B.:

Code: Alles auswählen

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      RFB UNIX PATH   PROCESS ID #    SERVER
1               5901                            1094            Xtigervnc
Stoppen desselben:

Code: Alles auswählen

tigervncserver -kill :DISPLAYNUMMER oder tigervncserver -clean -kill :DISPLAYNUMMER
Das -clean löscht auch gleich noch die dazugehörigen Logdateien.

Sieht dann so aus:

Code: Alles auswählen

pi@raspberrypi:~ $ tigervncserver -clean -kill :1
Killing Xtigervnc process ID 1094... success!
Alle Instanzen beenden und Logs löschen:

Code: Alles auswählen

tigervncserver -clean -kill :*
Wenn das normale Abmelden aus dem Client nicht funktionieren sollte, hilft im Fenstermodus der Klick auf das im Bild gezeigte Kreuz:

Bild

Dies nur als Tipp, da ich des Öfteren (auch in XRDP) den Client nie über das normale Abmeldenmenü beenden konnte.

Ansonsten gäbe es noch viel, dass man zum TigerVNC schreiben könnte, jedoch verweise ich da auf die dazugehörigen Dokumentationen auf der Website des Paketes unter der folgenden Adresse: Externer Link https://tigervnc.org/

Gerade was Sicherheit im Falle des externen Zugriffs angeht, müssen hier weitere Maßnahmen getroffen werden.
Diese Anleitung stellt daher nur einen Anfang dar, um diesen Service auf dem Raspberry Pi intern im lokalen Netz nutzen zu können.

Ansonsten, wie immer: Viel Erfolg.


Fortsetzungen, Korrekturen, Änderungen möglich ....

Copyright © 2024 by RasPiFun.de
;) Gruß Outi :D
Antworten