VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04
Někteří uživatelé si pronajímají relativně levné VPS se systémem Windows ke spouštění služeb vzdálené plochy. Totéž lze provést na Linuxu bez hostování vlastního hardwaru v datovém centru nebo pronájmu vyhrazeného serveru. Někteří lidé potřebují známé grafické prostředí pro testování a vývoj nebo vzdálenou plochu s širokým kanálem pro práci z mobilních zařízení. Existuje mnoho možností pro použití systému virtuální sítě (VNC) založeného na protokolu Remote FrameBuffer (RFB). V tomto krátkém článku vám řekneme, jak jej nakonfigurovat na virtuálním počítači s jakýmkoli hypervizorem.

Obsah:

Výběr serveru VNC
Instalace a konfigurace
Spuštění služby přes systemd
Připojení k počítači

Výběr serveru VNC

Službu VNC lze zabudovat do virtualizačního systému a hypervizor ji propojí s emulovanými zařízeními a nebude potřeba žádná další konfigurace. Tato možnost zahrnuje značnou režii a není podporována všemi poskytovateli – a to i v implementaci méně náročné na zdroje, kdy se místo emulace skutečného grafického zařízení přenáší na virtuální stroj zjednodušená abstrakce (framebuffer). Někdy je VNC server vázán na běžící X server, ale tato metoda je vhodnější pro přístup k fyzickému stroji a na virtuálním vytváří řadu technických potíží. Nejjednodušší způsob instalace VNC serveru je pomocí vestavěného X serveru. Nevyžaduje fyzická zařízení (video adaptér, klávesnice a myš) ani jejich emulaci pomocí hypervizoru, a proto je vhodný pro jakýkoli typ VPS.

Instalace a konfigurace

Budeme potřebovat virtuální stroj s Ubuntu Server 18.04 LTS ve výchozí konfiguraci. Ve standardních úložištích této distribuce je několik VNC serverů: TightVNC, TigerVNC, x11vnc a další. Rozhodli jsme se pro TigerVNC - aktuální fork TightVNC, který vývojář nepodporuje. Nastavení dalších serverů se provádí podobným způsobem. Je potřeba zvolit i desktopové prostředí: optimální variantou by podle nás bylo XFCE kvůli relativně nízkým nárokům na výpočetní zdroje. Kdo chce, může si nainstalovat další DE nebo WM: vše závisí na osobních preferencích, ale výběr softwaru přímo ovlivňuje potřebu RAM a výpočetních jader.

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

Instalace desktopového prostředí se všemi závislostmi se provádí pomocí následujícího příkazu:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Dále musíte nainstalovat VNC server:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Spouštět to jako superuživatel je špatný nápad. Vytvořte uživatele a skupinu:

sudo adduser vnc

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

Přidejme uživatele do skupiny sudo, aby mohl provádět úkoly související s administrací. Pokud taková potřeba není, můžete tento krok přeskočit:

sudo gpasswd -a vnc sudo

Dalším krokem je spuštění serveru VNC s uživatelskými právy vnc pro vytvoření bezpečného hesla a konfiguračních souborů v adresáři ~/.vnc/. Délka hesla může být 6 až 8 znaků (nadbytečné znaky jsou oříznuty). V případě potřeby je nastaveno i heslo pouze pro prohlížení, tzn. bez přístupu ke klávesnici a myši. Jako uživatel vnc se spouštějí následující příkazy:

su - vnc
vncserver -localhost no

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04
Protokol RFB standardně používá rozsah portů TCP od 5900 do 5906 – jedná se o tzv. zobrazovací porty, z nichž každý odpovídá obrazovce X serveru. V tomto případě jsou porty spojeny s obrazovkami od :0 do :6. Instance serveru VNC, kterou jsme spustili, naslouchá portu 5901 (obrazovka: 1). Jiné instance mohou pracovat na jiných portech s obrazovkami :2, :3 atd. Před další konfigurací je třeba zastavit server:

vncserver -kill :1

Příkaz by měl zobrazit něco takového: „Killing Xtigervnc process ID 18105... success!“

Když se TigerVNC spustí, spustí skript ~/.vnc/xstartup pro konfiguraci nastavení konfigurace. Vytvořme si vlastní skript, nejprve si uložíme záložní kopii stávajícího, pokud existuje:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

Relace desktopového prostředí XFCE se spouští následujícím skriptem xstartup:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

Příkaz xrdb je vyžadován pro VNC, aby mohl číst soubor .Xresources v domovském adresáři. Zde může uživatel definovat různá nastavení grafické plochy: vykreslování písma, barvy terminálu, motivy kurzoru atd. Skript musí být spustitelný:

chmod 755 ~/.vnc/xstartup

Tím je nastavení serveru VNC dokončeno. Pokud jej spustíte příkazem vncserver -localhost no (jako uživatel vnc), můžete se připojit pomocí dříve zadaného hesla a zobrazit následující obrázek:

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

Spuštění služby přes systemd

Ruční spouštění VNC serveru není vhodné pro bojové použití, proto nakonfigurujeme systémovou službu. Příkazy se spouštějí jako root (používáme sudo). Nejprve vytvořte nový soubor jednotky pro náš server:

sudo nano /etc/systemd/system/[email protected]

Symbol @ v názvu vám umožňuje předat argument pro konfiguraci služby. V našem případě určuje port zobrazení VNC. Soubor jednotky se skládá z několika částí:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Poté musíte systemd upozornit na nový soubor a aktivovat jej:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

Číslo 1 v názvu určuje číslo obrazovky.

Zastavte VNC server, spusťte jej jako službu a zkontrolujte stav:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Pokud služba běží, měli bychom dostat něco takového.

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

Připojení k počítači

Naše konfigurace nepoužívá šifrování, takže síťové pakety mohou být zachyceny útočníky. Navíc na VNC serverech poměrně často najít zranitelnosti, takže byste je neměli otevírat pro přístup z internetu. Chcete-li se bezpečně připojit k místnímu počítači, musíte zabalit provoz do tunelu SSH a poté nakonfigurovat klienta VNC. V systému Windows můžete použít grafického klienta SSH (například PuTTY). Z bezpečnostních důvodů TigerVNC na serveru naslouchá pouze localhost a není přímo přístupný z veřejných sítí:


sudo netstat -ap |more

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04
V Linuxu, FreeBSD, OS X a dalších UNIXových OS se tunel z klientského počítače vytvoří pomocí nástroje ssh (sshd musí být spuštěn na serveru VNC):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

Volba -L váže port 5901 vzdáleného připojení k portu 5901 na localhost. Volba -C umožňuje kompresi a volba -N říká ssh, aby vzdálený příkaz neprováděl. Volba -l určuje přihlášení pro vzdálené přihlášení.

Po nastavení tunelu na místním počítači musíte spustit klienta VNC a navázat připojení k hostiteli 127.0.0.1:5901 (localhost:5901) pomocí dříve zadaného hesla pro přístup k serveru VNC. Nyní můžeme bezpečně komunikovat prostřednictvím šifrovaného tunelu s grafickým desktopovým prostředím XFCE na VPS. Na snímku obrazovky je spuštěna nejvyšší utilita v emulátoru terminálu, která ukazuje nízkou spotřebu výpočetních zdrojů virtuálního stroje. Pak bude vše záviset na uživatelských aplikacích.

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04
Server VNC můžete nainstalovat a nakonfigurovat v Linuxu na téměř libovolném VPS. To nevyžaduje nákladné konfigurace náročné na zdroje s emulací grafického adaptéru nebo nákup komerčních softwarových licencí. Kromě možnosti systémové služby, kterou jsme zvažovali, existují další: spouštění v režimu démona (přes /etc/rc.local) při bootování systému nebo na vyžádání přes inetd. Poslední jmenovaný je zajímavý pro vytváření konfigurací pro více uživatelů. Internetový superserver spustí VNC server a připojí k němu klienta a VNC server vytvoří novou obrazovku a spustí relaci. K ověření v rámci něj můžete použít správce grafického zobrazení (např. LightDM), a po odpojení klienta bude relace ukončena a všechny programy pracující s obrazovkou budou ukončeny.

VPS na Linuxu s grafickým rozhraním: spuštění VNC serveru na Ubuntu 18.04

Zdroj: www.habr.com

Přidat komentář