Fjärrstyrd GUI-åtkomst till en Linux-dator med Tightvnc och systemd
On januari 13, 2022 by adminDetta är en guide för att installera TightVNC på Raspberry Pi. Den senaste versionen av Raspbian innehåller nu RealVNC som är ett alternativt fjärrskrivbordsverktyg. Om du föredrar att använda RealVNC så aktiveras det enkelt genom verktyget raspi-config. Den här guiden kommer att vara användbar för dem som vill förstå hur man skapar andra program som ska köras vid uppstart genom systemd.
Kommandoraden är ett utmärkt sätt att hantera en Linuxdator på distans om du inte har något emot att skriva in kommandon, men ibland behöver du kunna se ett grafiskt gränssnitt. Utan en mycket lång kabel är ett av de bästa sätten att göra detta att använda VNC-protokollet (Virtual Network Computing).
TightVNC vs Real VNC
TightVNC-servern skapar ett annat virtuellt fönster som replikeras på en annan maskin med hjälp av TightVNC-klienten. Detta skiljer sig från RealVNC som normalt sett oftast ekar standardskärmen.
När de flesta tänker på ett fjärrskrivbordsverktyg så tänker de oftast på hur RealVNC fungerar. I det här fallet när du flyttar musen eller startar ett program visas samma utdata på en fysiskt ansluten skärm (normalt HDMI) och på en fjärrklient via nätverket.
TightVNC är användbart om du vill köra något annat än det som visas på huvudskärmen. Du kan till exempel använda det så att du kan ha en statusvisning på huvudskärmen (via HDMI) med en annan skärm som används för konfigurationen som visas på en bärbar dator.
En annan fördel med TightVNC är att det är GRATIS programvara med öppen källkod. Som sådan har den inga begränsningar i användningen och du kan se och ändra källkoden. Real VNC är en kommersiell version av VNC och måste licensieras. Real VNC är gratis att använda för personligt bruk på Raspberry Pi, men har begränsningar om du vill göra andra saker med den, vilket kan kräva en kommersiell licens. Detta inkluderar att köra Raspbian Desktop-avbildningen på en PC eftersom den inte innehåller den kommersiella programvaran.
Installation av ett uppstartsskript med hjälp av Systemd
Nedan följer instruktioner om hur du konfigurerar detta på Raspberry Pi (Debianbaserad distribution). Det bör vara likadant för alla andra Debianbaserade distributioner (t.ex. Ubuntu) som använder Systemd-startfiler. Vissa andra distributioner använder olika programvaruinstallationsverktyg och eventuellt olika init-installationsverktyg.
Om detta används i kombination med guiden för att köra Raspberry Pi huvudlöst med Debian Linux kan det användas för att konfigurera en Raspberry Pi för fjärråtkomst utan att någonsin behöva ansluta den till en bildskärm.
Väljning av TightVNC
Det finns flera programvaruprojekt som stöder VNC. Jag har valt att använda TightVNC eftersom det är gratis programvara med öppen källkod (GPL2), ger komprimering så att den kan fungera över ett långsamt nätverk (Internet) och är lättillgänglig i programvaruupplagorna.
Client-server-modellen
VNC följer den traditionella klient-server-modellen. Serverprogramvaran körs på värddatorn som ska nås, och klientprogramvaran körs på den lokala maskin som vill styra värddatorn. Servern och klienten behöver inte vara samma (t.ex. kan klienten vara RealVNC när servern är TightVNC), men vissa funktioner fungerar bara när samma klient och server används.
Installera TightVNC-serverns programvara
Först uppdaterar du informationen om programvaruförrådet med hjälp avsudo apt update
Det här är särskilt viktigt om du precis har installerat operativsystemet eftersom informationen om förrådet kan vara ofullständig.
Installera serverprogramvaran från repositories:sudo apt install tightvncserver
Starta server och konfigurera ett lösenord
Första gången du kör servern uppmanas du att ange ett lösenord. Detta är det lösenord som du använder när du ansluter på distans.
/usr/bin/tightvncserver
Det finns inget behov av att skapa ett lösenord för endast visning, om du inte har ett specifikt behov.
När servern startar talar den om för dig vilket virtuellt skrivbord som har konfigurerats. I det här fallet:New 'X' desktop is raspberrypi:1
säger att det är virtuellt skrivbord 1. Du ansluter till detta genom att använda :1 i slutet av IP-adressen i klienten, detta är den som vi kommer att ställa in så att den startar automatiskt senare.
Du kan köra flera instanser. Varje gång du startar tightvncserver kommer den att använda nästa tillgängliga skrivbord, men i de flesta fall behöver du bara en.
Att lägga till Tightvnc i systemd startup
För att få Tightvnc att starta automatiskt måste vi skapa en ny startup-fil, som måste lagras i katalogen /etc/systemd/system/ och sluta med suffixet ”.service”. Jag kallade denna för tightvncserver.service. Denna måste skapas som root-användare så använd 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
.
Du kan behöva ändra användarnamnet på rad 8. Det är för närvarande inställt på pi som är standardanvändarnamnet på Raspberry Pi Raspbian-avbildningen. Ställ in detta till det användarnamn du vill logga in på TightVNC som. Sätt inte root som användare.
Ändra filen så att den ägs av rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Föränd filen körbar genom att körasudo chmod 755 /etc/systemd/system/tightvncserver.service
Det är en bra idé att testa skriptet vid det här laget snarare än att vänta till efter en omstart. Detta görs med hjälp av:sudo systemctl start tightvncserver.service
Oroa dig inte om du får följande felmeddelande, vilket beror på att du redan har startat tightvncA VNC server is already running as :1
Aktivera start vid uppstart med hjälp avsudo systemctl enable tightvncserver.service
TightVNC kommer nu att starta vid uppstart. Jag rekommenderar att du startar om vid det här laget för att se till att det fungerar, men du kan också stoppa och starta tjänsten med hjälp av kommandot systemctl i stället.
Notera att detta är utformat för att bara köra en instans av TightVNC på datorn. Om du vill kunna starta och stoppa specifika instanser av TightVNC måste du justera startskriptet på lämpligt sätt.
Installation av Tightvnc viewer (VNC-klient) på en Linux-dator
På en Linux-dator kan du installera tittaren medsudo apt install xtightvncviewer
eller om det inte finns i repositories prova:sudo apt-get install ssvnc
Detta fungerar endast med Debian/Ubuntu-baserade distributioner, för andra distributioner använd den vanliga pakethanteraren.
Notera att ssvnc – som är den version jag installerade på min Kubuntu-dator är baserad på tightvnc, men har också möjlighet att konfigurera ssh-tunneln (se senare) via GUI.
Logga in medxtightvncviewer 192.168.1.6:1
(ersätt med din egen IP-adress i förekommande fall)
Installation av Tightvnc view på en Windows-dator
För att få tillgång från Windows eller med hjälp av Java-klienten som du laddar ner från TightVNC.com
Säkra TightVNC
TightVNC gör det möjligt för alla som känner till lösenordet att logga in som användaren som den körs under. Det gör också detta utan kryptering så vem som helst kan snoka in på sessionen. Lyckligtvis finns det en säker lösning, vilket är att tunnla anslutningen över en ssh-inloggning (secure shell).
Det första steget är att begränsa Tightvnc till endast den lokala datorn. Detta görs genom att lägga till alternativet -localhost när tightvncserver startas. För att göra detta redigerar du rad 7 i filen /etc/systemd/system/tightvncserver.service så att den lyder:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Därefter startar du om servern.
För att logga in med hjälp av ssh – logga först in på värddatorn med hjälp av sshssh [email protected] -L 5901:localhost:5901
Otillvalet -L skapar tunneln, från den aktuella datorn (som standard) port 5901 till värddatorn (som localhost) port 5901. Port 5901 är standardporten för display 1, 5902 för display 2 osv.
För att ansluta med tightvnc använder du nu kommandotxtightvncviewer 127.0.0.1:1
Bemärk att din tidigare terminal nu kommer att vara inloggad på Raspberry Pi så du måste starta en ny terminal eller flik för att köra tittaren.
Om du använder Windows kan ssh-tunneln skapas från PuTTY
Har du sedan anslutit med hjälp av vnc-klienten genom att använda 127.0.0.0.1:1.
Du kan nu använda GUI:n för att köra program på Raspberry Pi utan att behöva en bildskärm eller ett tangentbord. Om du har ställt in portvidarebefordran på din router kan du göra detta via Internet.
Starta din fönsterhanterare
Instruktionerna ovan är tillräckliga för Raspberry Pi som kör Raspbian (Debian). På andra system kan du behöva göra ytterligare en konfigurationsändring för att starta din normala fönsterhanterare/programstartare. Om du får en tom skärm när du ansluter redigerar du filen ~/.vnc/xstartup och ersätter raden /etc/X11/Xsession med någon av följande enligt vad som är lämpligt:
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
Till exempel med Ubuntu skulle du använda posten för gnome, för xubuntu skulle du använda xfce och för kubuntu använda kde. Raspberry Pi använder lxde, men detta startas automatiskt på Raspberry Pi så du behöver inte lägga till det i xstartup-filen.
Lämna ett svar