Remote-GUI-Zugriff auf einen Linux-Computer mit Tightvnc mit systemd
On Januar 13, 2022 by adminDies ist eine Anleitung zur Installation von TightVNC auf dem Raspberry Pi. Die neueste Version von Raspbian enthält nun RealVNC, ein alternatives Remote-Desktop-Tool. Wenn Sie es vorziehen, RealVNC zu verwenden, dann ist es leicht durch das raspi-config-Tool aktiviert, diese Anleitung wird für diejenigen nützlich sein, die über die Erstellung anderer Anwendungen zu verstehen, um beim Start durch systemd laufen.
Die Kommandozeile ist eine großartige Möglichkeit, einen entfernten Linux-Computer zu verwalten, wenn es Ihnen nichts ausmacht, Befehle einzutippen, aber manchmal müssen Sie in der Lage sein, eine grafische Benutzeroberfläche zu sehen. Ohne ein sehr langes Kabel ist eine der besten Möglichkeiten, dies zu tun, die Verwendung des VNC-Protokolls (Virtual Network Computing).
TightVNC vs. Real VNC
Der TightVNC-Server erstellt ein anderes virtuelles Fenster, das auf einer anderen Maschine mit dem TightVNC-Client repliziert wird. Dies unterscheidet sich von RealVNC, das normalerweise den Standardbildschirm wiedergibt.
Wenn die meisten Leute an ein Remote-Desktop-Tool denken, dann denken sie normalerweise an die Arbeitsweise von RealVNC. In diesem Fall, wenn Sie die Maus bewegen oder eine Anwendung starten, wird die gleiche Ausgabe auf einem physisch angeschlossenen Bildschirm (normalerweise HDMI) und auf einem Remote-Client über das Netzwerk angezeigt.
TightVNC ist nützlich, wenn Sie etwas anderes als das, was auf dem Hauptbildschirm ist, ausführen möchten. Zum Beispiel könnte man es verwenden, um eine Statusanzeige auf dem Hauptbildschirm (über HDMI) mit einer anderen Anzeige für die Konfiguration zu haben, die auf einem Laptop angezeigt wird.
Ein weiterer Vorteil von TightVNC ist, dass es eine kostenlose Open-Source-Software ist. Als solche hat sie keine Nutzungsbeschränkungen und Sie können den Quellcode einsehen und verändern. Real VNC ist eine kommerzielle Version von VNC und muss lizenziert werden. Real VNC ist für den persönlichen Gebrauch auf dem Raspberry Pi kostenlos, hat aber Einschränkungen, wenn Sie andere Dinge damit machen wollen, die eine kommerzielle Lizenz erfordern können. Dazu gehört auch das Ausführen des Raspbian-Desktop-Images auf einem PC, da dieses die kommerzielle Software nicht enthält.
Installation eines Startskripts mit Systemd
Die folgenden Anweisungen beschreiben, wie man dies auf dem Raspberry Pi (Debian-basierte Distribution) konfiguriert. Sie sollte für jede andere Debian-basierte Distribution (z.B. Ubuntu), die Systemd-Startdateien verwendet, ähnlich sein. Einige andere Distributionen verwenden andere Software-Installationstools und möglicherweise andere Init-Setup-Tools.
Wenn diese Anleitung in Kombination mit der Anleitung zum Betrieb des Raspberry Pi im Headless-Modus unter Debian Linux verwendet wird, kann sie dazu verwendet werden, einen Raspberry Pi für den Fernzugriff einzurichten, ohne ihn jemals an einen Monitor anschließen zu müssen.
Auswahl von TightVNC
Es gibt mehrere Softwareprojekte, die VNC unterstützen. Ich habe mich für TightVNC entschieden, weil es kostenlose Open-Source-Software (GPL2) ist, eine Komprimierung bietet, die es ermöglicht, über ein langsames Netzwerk (Internet) zu arbeiten, und in den Software-Repositories leicht verfügbar ist.
Client-Server-Modell
VNC folgt dem traditionellen Client-Server-Modell. Die Server-Software läuft auf dem Host, auf den zugegriffen werden soll, und die Client-Software läuft auf dem lokalen Rechner, der den Host steuern möchte. Server und Client müssen nicht identisch sein (z.B. kann der Client RealVNC sein, während der Server TightVNC ist), aber einige Funktionen funktionieren nur, wenn derselbe Client und Server verwendet werden.
Installieren Sie die TightVNC-Server-Software
Erst aktualisieren Sie die Software-Repository-Informationen mitsudo apt update
Dies ist besonders wichtig, wenn Sie das Betriebssystem gerade erst installiert haben, da die Repository-Informationen unvollständig sein können.
Installieren Sie die Serversoftware aus den Repositories:sudo apt install tightvncserver
Starten Sie den Server und konfigurieren Sie ein Passwort
Beim ersten Start des Servers werden Sie aufgefordert, ein Passwort festzulegen. Dies ist das Kennwort, das Sie verwenden, wenn Sie eine Remote-Verbindung herstellen.
/usr/bin/tightvncserver
Es besteht keine Notwendigkeit, ein Kennwort nur für die Ansicht zu erstellen, es sei denn, Sie haben einen speziellen Bedarf.
Wenn der Server startet, wird Ihnen mitgeteilt, welcher virtuelle Desktop eingerichtet wurde. In diesem Fall:New 'X' desktop is raspberrypi:1
sagt, dass es sich um den virtuellen Desktop 1 handelt. Sie würden sich mit diesem verbinden, indem Sie :1 am Ende der IP-Adresse im Client verwenden. Dies ist derjenige, den wir später zum automatischen Start einrichten werden.
Sie können mehrere Instanzen ausführen. Jedes Mal, wenn Sie tightvncserver starten, wird es den nächsten verfügbaren Desktop verwenden, aber in den meisten Fällen werden Sie nur eine benötigen.
Hinzufügen von Tightvnc zum systemd-Startup
Um Tightvnc automatisch starten zu lassen, müssen wir eine neue Startdatei erstellen, die im Verzeichnis /etc/systemd/system/ gespeichert werden muss und mit der Endung „.service“ endet. Ich habe sie tightvncserver.service genannt. Diese muss als root-Benutzer erstellt werden, also mit sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
Möglicherweise müssen Sie den Benutzernamen in Zeile 8 ändern. Derzeit ist er auf pi eingestellt, den Standardbenutzernamen des Raspberry Pi Raspbian-Images. Setzen Sie diesen auf einen beliebigen Benutzernamen, mit dem Sie sich bei TightVNC anmelden möchten. Setzen Sie nicht root als Benutzer ein.
Ändern Sie die Datei so, dass sie root gehörtsudo chown root:root /etc/systemd/system/tightvncserver.service
Machen Sie die Datei ausführbar, indem Siesudo chmod 755 /etc/systemd/system/tightvncserver.service
Es ist eine gute Idee, das Skript an diesem Punkt zu testen, anstatt bis nach einem Neustart zu warten. Dies geschieht mit:sudo systemctl start tightvncserver.service
Sorgen Sie sich nicht, wenn Sie die folgende Fehlermeldung erhalten, denn das liegt daran, dass Sie tightvnc bereits gestartet habenA VNC server is already running as :1
Aktivieren Sie den Start beim Booten mitsudo systemctl enable tightvncserver.service
TightVNC wird nun beim Start gestartet. Ich empfehle Ihnen, an dieser Stelle einen Neustart durchzuführen, um sicherzustellen, dass es funktioniert, aber Sie können den Dienst stattdessen auch einfach mit dem Befehl systemctl stoppen und starten.
Bitte beachten Sie, dass dies nur für den Betrieb einer Instanz von TightVNC auf dem Computer gedacht ist. Wenn Sie in der Lage sein wollen, bestimmte Instanzen von TightVNC zu starten und zu stoppen, müssen Sie das Startskript entsprechend anpassen.
Installation des Tightvnc-Viewers (VNC-Client) auf einem Linux-Computer
Auf einem Linux-Computer können Sie den Viewer mitsudo apt install xtightvncviewer
oder, falls dieser nicht in den Repositories enthalten ist, wie folgt installieren:sudo apt-get install ssvnc
Dies funktioniert nur mit Debian / Ubuntu-basierten Distributionen, für andere Distributionen verwenden Sie den normalen Paketmanager.
Bitte beachten Sie, dass ssvnc – die Version, die ich auf meinem Kubuntu-Computer installiert habe – auf tightvnc basiert, aber auch die Möglichkeit bietet, das ssh-Tunneling (siehe später) über die GUI zu konfigurieren.
Anmelden mitxtightvncviewer 192.168.1.6:1
(ggf. durch die eigene IP-Adresse ersetzen)
Installation der Tightvnc-Ansicht auf einem Windows-Computer
Zugriff von Windows oder mit dem Java-Client, der von TightVNC.com
Sichern von TightVNC
TightVNC erlaubt jedem, der das Passwort kennt, sich als der Benutzer anzumelden, unter dem es läuft. Außerdem geschieht dies ohne Verschlüsselung, so dass jeder die Sitzung ausspähen kann. Glücklicherweise gibt es eine sichere Lösung, die darin besteht, die Verbindung über eine ssh-Anmeldung (Secure Shell) zu tunneln.
Der erste Schritt besteht darin, Tightvnc nur auf den lokalen Computer zu beschränken. Dies geschieht durch Hinzufügen der Option -localhost beim Starten des tightvncserver. Dazu editieren Sie die Zeile 7 in der Datei /etc/systemd/system/tightvncserver.service wie folgt:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Dann starten Sie den Server neu.
Um sich mit ssh anzumelden, loggen Sie sich zuerst mit ssh auf dem Host-Computer einssh [email protected] -L 5901:localhost:5901
Die Option -L erstellt den Tunnel vom aktuellen Computer (Standard) Port 5901 zum Host-Computer (als localhost) Port 5901. Port 5901 ist der Standardport für Display 1, 5902 für Display 2 usw.
Um sich mit tightvnc zu verbinden, verwenden Sie nun den Befehlxtightvncviewer 127.0.0.1:1
Beachten Sie, dass Ihr vorheriges Terminal nun auf dem Raspberry Pi angemeldet ist, so dass Sie ein neues Terminal oder einen neuen Tab starten müssen, um den Viewer auszuführen.
Wenn Sie Windows verwenden, kann der ssh-Tunnel von PuTTY aus erstellt werden
Verbinden Sie sich dann mit dem vnc-Client über 127.0.0.1:1.
Sie können nun die GUI verwenden, um Anwendungen auf dem Raspberry Pi auszuführen, ohne einen Monitor oder eine Tastatur zu benötigen. Wenn Sie auf Ihrem Router eine Portweiterleitung eingerichtet haben, können Sie dies über das Internet tun.
Starten Sie Ihren Fenstermanager
Die obigen Anweisungen sind ausreichend für den Raspberry Pi mit Raspbian (Debian). Auf anderen Systemen müssen Sie möglicherweise eine weitere Konfigurationsänderung vornehmen, um Ihren normalen Fenstermanager / Anwendungsstarter zu starten. Wenn Sie beim Herstellen der Verbindung einen leeren Bildschirm erhalten, bearbeiten Sie die Datei ~/.vnc/xstartup und ersetzen Sie die Zeile /etc/X11/Xsession durch eine der folgenden Zeilen:
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Bei Ubuntu würden Sie beispielsweise den Eintrag für gnome verwenden, bei xubuntu xfce und bei kubuntu kde. Der Raspberry Pi verwendet lxde, aber das wird auf dem Raspberry Pi automatisch gestartet, so dass man es nicht zur xstartup-Datei hinzufügen muss.
Schreibe einen Kommentar