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
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ů:
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
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
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:
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.
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
sudo netstat -ap |more
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.
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ř.
Zdroj: www.habr.com