Remote GUI toegang tot een Linux computer met behulp van Tightvnc met systemd
On januari 13, 2022 by adminDit is een gids voor het installeren van TightVNC op de Raspberry Pi. De laatste versie van Raspbian bevat nu RealVNC, wat een alternatieve remote desktop tool is. Als u liever RealVNC gebruikt dan kan dit eenvoudig worden ingeschakeld via de raspi-config tool, deze gids is nuttig voor degenen die willen begrijpen hoe je andere applicaties kunt maken om te draaien tijdens het opstarten via systemd.
De commandoregel is een prima manier om een Linux computer op afstand te beheren als je het niet erg vindt om commando’s in te typen, maar soms moet je ook een GUI kunnen zien. Een van de beste manieren om dit te doen is het gebruik van het VNC protocol (Virtual Network Computing).
TightVNC vs Real VNC
De TightVNC server creëert een ander virtueel venster dat wordt gerepliceerd op een andere machine met de TightVNC client. Dit verschilt van RealVNC die normaal gesproken het standaard scherm echoot.
Wanneer de meeste mensen denken aan een remote desktop tool dan denken ze meestal aan de manier waarop RealVNC werkt. In dit geval, wanneer je de muis beweegt, of een applicatie start, wordt dezelfde output getoond op een fysiek aangesloten scherm (normaal gesproken HDMI) en op een remote client via het netwerk.
TightVNC is handig als je iets anders wilt draaien dan wat er op het hoofdscherm staat. U zou het bijvoorbeeld kunnen gebruiken zodat u een status display op het hoofdscherm (via HDMI) kunt hebben met een ander display gebruikt voor de configuratie die wordt weergegeven op een laptop.
Een ander voordeel van TightVNC is dat het GRATIS open source software is. Als zodanig heeft het geen beperkingen op het gebruik en kunt u de broncode bekijken en wijzigen. Real VNC is een commerciële versie van VNC en moet gelicenseerd worden. Real VNC is vrij te gebruiken voor persoonlijk gebruik op de Raspberry Pi, maar heeft beperkingen als je er andere dingen mee wilt doen waarvoor je een commerciële licentie nodig hebt. Dit geldt ook voor het draaien van de Raspbian Desktop image op een PC, omdat daar de commerciële software niet bij zit.
Installeren van een opstartscript met Systemd
Hieronder volgen instructies over hoe dit op de Raspberry Pi (Debian gebaseerde distributie) te configureren. Het zou vergelijkbaar moeten zijn voor elke andere Debian-gebaseerde distributie (bijv. Ubuntu) die Systemd opstartbestanden gebruikt. Sommige andere distributies gebruiken andere software installatie tools en mogelijk andere init setup tools.
Als dit wordt gebruikt in combinatie met de gids om de Raspberry Pi headless te draaien met Debian Linux, dan kan het worden gebruikt om een Raspberry Pi in te stellen voor remote toegang zonder dat het ooit nodig is om het aan te sluiten op een monitor.
Kiezen voor TightVNC
Er zijn verschillende software projecten die VNC ondersteunen. Ik heb gekozen om TightVNC te gebruiken omdat het gratis open source software is (GPL2), compressie biedt om over een traag netwerk (Internet) te kunnen werken en gemakkelijk beschikbaar is in de software repositories.
Client-server model
VNC volgt het traditionele client sever model. De serversoftware draait op de host waartoe toegang moet worden verkregen, en de clientsoftware draait op de lokale machine die de host wenst te bedienen. De server en client hoeven niet hetzelfde te zijn (de client kan bijvoorbeeld RealVNC zijn terwijl de server TightVNC is), maar sommige functies werken alleen wanneer dezelfde client en server worden gebruikt.
Installeer de TightVNC server software
Ververs eerst de informatie in de software repository metsudo apt update
Dit is vooral belangrijk als u het besturingssysteem net hebt geïnstalleerd, omdat de informatie in de repository onvolledig kan zijn.
Installeer de serversoftware vanuit de repositories:sudo apt install tightvncserver
Server starten en wachtwoord instellen
De eerste keer dat u de server start, wordt u gevraagd een wachtwoord in te stellen. Dit is het wachtwoord dat u gebruikt wanneer u op afstand verbinding maakt.
/usr/bin/tightvncserver
Het is niet nodig om een view only-wachtwoord aan te maken, tenzij u een specifieke behoefte hebt.
Wanneer de server start, wordt aangegeven welke virtuele desktop is ingesteld. In dit geval: New 'X' desktop is raspberrypi:1
zegt dat het virtueel bureaublad 1 is. Je zou hiermee verbinden met :1 aan het einde van het IP adres in de client, dit is degene die we later automatisch zullen laten opstarten.
Je kunt meerdere instanties draaien. Elke keer dat u tightvncserver start zal het de volgende beschikbare desktop gebruiken, maar in de meeste gevallen heeft u er maar een nodig.
Tightvnc toevoegen aan systemd startup
Om Tightvnc automatisch te laten starten moeten we een nieuw startup bestand maken, dat moet worden opgeslagen in de /etc/systemd/system/ directory en moet eindigen met het achtervoegsel “.service”. Ik noemde dit tightvncserver.service. Dit moet aangemaakt worden als de root gebruiker dus met 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
Het is mogelijk dat u de gebruikersnaam op regel 8 moet wijzigen. Deze is momenteel ingesteld op pi, wat de standaard gebruikersnaam is op het Raspberry Pi Raspbian image. Stel dit in op de gebruikersnaam die je wilt gebruiken om in te loggen bij TightVNC. Zet root niet als gebruiker.
Verander het bestand zodat het eigendom is van rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Maak het bestand uitvoerbaar door te draaiensudo chmod 755 /etc/systemd/system/tightvncserver.service
Het is een goed idee om het script nu te testen in plaats van te wachten tot na een reboot. Dit wordt gedaan met:sudo systemctl start tightvncserver.service
Maak u geen zorgen als u de volgende foutmelding krijgt, dit komt omdat u tightvnc al gestart hebtA VNC server is already running as :1
Inschakelen van opstarten bij opstarten metsudo systemctl enable tightvncserver.service
TightVNC zal nu opstarten bij het opstarten. Ik raad je aan om op dit punt te herstarten om er zeker van te zijn dat het werkt, maar je kunt de service ook gewoon stoppen en starten met het commando systemctl.
Merk op dat dit is ontworpen om slechts één instantie van TightVNC op de computer te draaien. Als je in staat wilt zijn om specifieke instanties van TightVNC te starten en te stoppen, dan moet je het opstartscript op de juiste manier aanpassen.
Installeren van Tightvnc viewer (VNC client) op een Linux computer
Op een Linux computer kunt u de viewer installeren metsudo apt install xtightvncviewer
of als dat niet in de repositories staat probeer:sudo apt-get install ssvnc
Dit werkt alleen met Debian / Ubuntu gebaseerde distributies, voor andere distributies gebruikt u de normale package manager.
Merk op dat ssvnc – de versie die ik op mijn Kubuntu computer heb geinstalleerd – gebaseerd is op tightvnc, maar ook de mogelijkheid heeft om de ssh tunnelling (zie later) via de GUI te configureren.
Inloggen metxtightvncviewer 192.168.1.6:1
(vervang door uw eigen IP adres indien nodig)
Tightvnc view installeren op een Windows computer
Toegang krijgen vanuit Windows of met behulp van de Java Client downloaden van TightVNC.com
Beveiligen van TightVNC
TightVNC staat iedereen toe die het wachtwoord weet om in te loggen als de gebruiker onder wie het draait. Het doet dit ook zonder encryptie, zodat iedereen kan meekijken met de sessie. Gelukkig is er een veilige oplossing, namelijk het tunnelen van de verbinding over een ssh (secure shell) login.
De eerste stap is om Tightvnc te beperken tot alleen de lokale computer. Dit wordt gedaan door de optie -localhost toe te voegen bij het starten van de tightvncserver. Om dit te doen bewerkt u regel 7 in het bestand /etc/systemd/system/tightvncserver.service als volgt:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Start vervolgens de server opnieuw.
Om in te loggen met ssh – log eerst in op de hostcomputer met sshssh [email protected] -L 5901:localhost:5901
De optie -L creëert de tunnel, van de huidige computer (standaard) poort 5901 naar de hostcomputer (als localhost) poort 5901. Poort 5901 is de standaard poort voor beeldscherm 1, 5902 voor beeldscherm 2 etc.
Om nu verbinding te maken met tightvnc gebruikt u het commandoxtightvncviewer 127.0.0.1:1
Merk op dat uw vorige terminal nu ingelogd zal zijn op de Raspberry Pi, dus u zult een nieuwe terminal of tabblad moeten starten om de viewer uit te voeren.
Als u Windows gebruikt, kunt u de ssh-tunnel maken vanuit PuTTY
Maak dan verbinding met de vnc-client via 127.0.0.1:1.
U kunt nu de GUI gebruiken om toepassingen op de Raspberry Pi uit te voeren zonder dat u een monitor of toetsenbord nodig hebt. Als u port forwarding op uw router hebt ingesteld, kunt u dit via het Internet doen.
Start uw window manager
De bovenstaande instructies zijn voldoende voor de Raspberry Pi met Raspbian (Debian). Op andere systemen moet u mogelijk nog een configuratiewijziging doorvoeren om uw normale window manager / applicatie launcher te starten. Als u een leeg scherm krijgt bij het verbinden, bewerk dan het bestand ~/.vnc/xstartup en vervang de regel /etc/X11/Xsession door een van de volgende, naargelang het geval.
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
Voor bijvoorbeeld Ubuntu zou u de entry voor gnome gebruiken, voor xubuntu zou u xfce gebruiken en voor kubuntu kde. De Raspberry Pi gebruikt lxde, maar dit wordt automatisch gestart op de Raspberry Pi er is geen noodzaak om het toe te voegen aan het xstartup bestand.
Geef een antwoord