Vzdálený přístup ke grafickému uživatelskému rozhraní počítače s Linuxem pomocí Tightvnc s systemd
On 13 ledna, 2022 by adminToto je průvodce instalací TightVNC na Raspberry Pi. Nejnovější verze Raspbianu nyní obsahuje RealVNC, což je alternativní nástroj pro vzdálenou plochu. Pokud byste raději používali RealVNC, pak jej snadno povolíte pomocí nástroje raspi-config, tento návod bude užitečný pro ty, kteří chtějí porozumět vytváření dalších aplikací spouštěných při startu pomocí systemd.
Příkazový řádek je skvělý způsob správy vzdáleného počítače s Linuxem, pokud vám nevadí zadávání příkazů, ale někdy potřebujete mít možnost zobrazit grafické rozhraní. Při nedostatku velmi dlouhého kabelu je jedním z nejlepších způsobů použití protokolu VNC (Virtual Network Computing).
TightVNC vs Real VNC
Server TightVNC vytvoří jiné virtuální okno, které je replikováno na jiném počítači pomocí klienta TightVNC. Tím se liší od RealVNC, který obvykle echoskopuje výchozí obrazovku.
Když si většina lidí představí nástroj pro vzdálenou plochu, pak se jim obvykle vybaví způsob, jakým funguje RealVNC. V tomto případě se při pohybu myší nebo spuštění aplikace zobrazí stejný výstup na fyzicky připojené obrazovce (obvykle HDMI) i na vzdáleném klientovi přes síť.
TightVNC je užitečný, pokud chcete spustit něco jiného, než co je na hlavní obrazovce. Můžete jej například použít tak, že na hlavní obrazovce (přes HDMI) můžete mít stavové zobrazení, přičemž pro konfiguraci se používá jiný displej, který se zobrazuje na notebooku.
Další výhodou TightVNC je, že se jedná o ZDARMA dostupný open source software. Jako takový nemá žádná omezení pro použití a můžete si prohlížet a upravovat zdrojový kód. Real VNC je komerční verze VNC a je třeba ji licencovat. Real VNC je zdarma pro osobní použití na Raspberry Pi, ale má omezení, pokud s ním chcete dělat další věci, které mohou vyžadovat komerční licenci. To zahrnuje i spuštění obrazu Raspbian Desktop na počítači, protože ten komerční software neobsahuje.
Instalace spouštěcího skriptu pomocí Systemd
Následují pokyny, jak jej nakonfigurovat na Raspberry Pi (distribuce založená na Debianu). Podobně by to mělo být i u jakékoli jiné distribuce založené na Debianu (např. Ubuntu), která používá spouštěcí soubory Systemd. Některé jiné distribuce používají jiné nástroje pro instalaci softwaru a případně i jiné nástroje pro nastavení init.
Pokud tento návod použijete v kombinaci s návodem pro bezhlavý provoz Raspberry Pi v systému Debian Linux, pak jej můžete použít k nastavení Raspberry Pi pro vzdálený přístup, aniž byste jej museli připojovat k monitoru.
Výběr TightVNC
Existuje několik softwarových projektů, které podporují VNC. Rozhodl jsem se použít TightVNC, protože je to svobodný software s otevřeným zdrojovým kódem (GPL2), poskytuje kompresi umožňující práci v pomalé síti (internetu) a je snadno dostupný v softwarových repozitářích.
Model klient-server
VNC se řídí tradičním modelem klient-server. Software serveru běží na hostiteli, ke kterému se má přistupovat, a software klienta běží na místním počítači, který chce hostitele ovládat. Server a klient nemusí být stejný (např. klientem může být RealVNC, když serverem je TightVNC), ale některé funkce mohou fungovat pouze při použití stejného klienta a serveru.
Instalace serverového softwaru TightVNC
Nejprve obnovte informace o úložišti softwaru pomocísudo apt update
To je obzvláště důležité, pokud jste právě nainstalovali operační systém, protože informace o úložišti mohou být neúplné.
Instalace serverového softwaru z úložišť:sudo apt install tightvncserver
Spuštění serveru a nastavení hesla
Při prvním spuštění serveru vás vyzve k nastavení hesla. Toto heslo použijete při vzdáleném připojení.
/usr/bin/tightvncserver
Není třeba vytvářet heslo pouze pro zobrazení, pokud nemáte specifickou potřebu.
Po spuštění serveru vám sdělí, která virtuální plocha byla nastavena. V tomto případě:New 'X' desktop is raspberrypi:1
říká, že se jedná o virtuální plochu 1. K té byste se připojili pomocí :1 na konci IP adresy v klientovi, to je ta, kterou později nastavíme tak, aby se spouštěla automaticky.
Můžete spustit více instancí. Při každém spuštění tightvncserveru se použije další dostupná plocha, ale ve většině případů vám bude stačit jedna.
Přidání Tightvnc do spouštění systemd
Aby se Tightvnc spouštěl automaticky, musíme vytvořit nový spouštěcí soubor, který musí být uložen v adresáři /etc/systemd/system/ a končit příponou „.service“. Já jsem tento soubor nazval tightvncserver.service. Ten je třeba vytvořit jako uživatel root, takže pomocí 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
.
Možná budete muset změnit jméno uživatele na řádku 8. V současné době je nastaveno na pi, což je výchozí uživatelské jméno v obrazu Raspberry Pi Raspbian. Nastavte jej na libovolné uživatelské jméno, pod kterým se chcete přihlašovat do programu TightVNC. Nezadávejte jako uživatele root.
Změňte soubor tak, aby jej vlastnil rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Udělejte soubor spustitelným spuštěnímsudo chmod 755 /etc/systemd/system/tightvncserver.service
V tomto okamžiku je dobré skript otestovat a nečekat až po restartu. To se provádí pomocí:sudo systemctl start tightvncserver.service
Neznepokojujte se, pokud se zobrazí následující chybová zpráva, což je způsobeno tím, že jste již tightvnc spustiliA VNC server is already running as :1
Zapněte spouštění při startu pomocísudo systemctl enable tightvncserver.service
TightVNC se nyní spustí při startu. Doporučuji v tomto okamžiku restartovat počítač, abyste se ujistili, že to funguje, ale místo toho můžete službu prostě zastavit a spustit pomocí příkazu systemctl.
Všimněte si, že je to určeno pro spuštění pouze jedné instance TightVNC v počítači. Pokud chcete mít možnost spouštět a zastavovat konkrétní instance TightVNC, budete muset spouštěcí skript vhodně upravit.
Instalace prohlížeče Tightvnc (klienta VNC) na počítači se systémem Linux
Na počítač se systémem Linux můžete prohlížeč nainstalovat pomocísudo apt install xtightvncviewer
nebo pokud to není v repozitářích, zkuste:sudo apt-get install ssvnc
Toto bude fungovat pouze v distribucích založených na Debianu / Ubuntu, pro ostatní distribuce použijte běžného správce balíčků.
Všimněte si, že ssvnc – což je verze, kterou jsem nainstaloval na svůj počítač s Kubuntu, je založena na tightvnc, ale má také možnost konfigurovat ssh tunelování (viz později) prostřednictvím grafického rozhraní.
Přihlášení pomocíxtightvncviewer 192.168.1.6:1
(podle potřeby nahraďte vlastní IP adresou)
Instalace zobrazení Tightvnc na počítači s Windows
Pro přístup z Windows nebo pomocí klienta Java si stáhněte TightVNC.com
Zabezpečení TightVNC
TightVNC umožňuje komukoli, kdo zná heslo, přihlásit se jako uživatel, pod kterým je spuštěn. Navíc to dělá bez šifrování, takže kdokoli může relaci odposlouchávat. Naštěstí existuje bezpečné řešení, které spočívá v tunelování připojení přes přihlášení pomocí ssh (secure shell).
Prvním krokem je omezení aplikace Tightvnc pouze na místní počítač. To se provede přidáním volby -localhost při spuštění tightvncserveru. Za tímto účelem upravte řádek 7 v souboru /etc/systemd/system/tightvncserver.service takto:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Poté restartujte server.
Pro přihlášení pomocí ssh – nejprve se přihlaste k hostitelskému počítači pomocí sshssh [email protected] -L 5901:localhost:5901
Volba -L vytvoří tunel, z aktuálního počítače (výchozí) port 5901 na hostitelský počítač (jako localhost) port 5901. Port 5901 je výchozí port pro displej 1, 5902 pro displej 2 atd.
Pro připojení pomocí tightvnc nyní použijte příkazxtightvncviewer 127.0.0.1:1
Všimněte si, že váš předchozí terminál bude nyní přihlášen k Raspberry Pi, takže pro spuštění prohlížeče budete muset spustit nový terminál nebo kartu.
Pokud používáte systém Windows, pak lze tunel ssh vytvořit v programu PuTTY
Poté se připojte pomocí klienta vnc s použitím adresy 127.0.0.1:1.
Nyní můžete používat grafické rozhraní pro spouštění aplikací na Raspberry Pi, aniž byste potřebovali monitor nebo klávesnici. Pokud máte na svém směrovači nastaveno přesměrování portů, můžete tak učinit přes internet.
Spuštění správce oken
Výše uvedené pokyny jsou dostatečné pro Raspberry Pi se systémem Raspbian (Debian). V jiných systémech bude možná nutné provést další změnu konfigurace, abyste mohli spustit běžného správce oken / spouštěč aplikací. Pokud se vám při připojení zobrazí prázdná obrazovka, upravte soubor ~/.vnc/xstartup a řádek /etc/X11/Xsession nahraďte podle potřeby jedním z následujících řádků:
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
Například u Ubuntu byste použili položku pro gnome, u xubuntu byste použili xfce a u kubuntu kde. Raspberry Pi používá lxde, ale to se na Raspberry Pi spouští automaticky, není třeba ho přidávat do souboru xstartup.
Napsat komentář