VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04
Niektorí používatelia si prenajímajú relatívne lacné VPS so systémom Windows na spustenie služieb vzdialenej pracovnej plochy. To isté možno urobiť na Linuxe bez hosťovania vlastného hardvéru v dátovom centre alebo prenájmu dedikovaného servera. Niektorí ľudia potrebujú známe grafické prostredie na testovanie a vývoj alebo vzdialenú plochu so širokým kanálom na prácu z mobilných zariadení. Existuje veľa možností na používanie systému virtuálnej siete (VNC) založeného na protokole Remote FrameBuffer (RFB). V tomto krátkom článku vám povieme, ako ho nakonfigurovať na virtuálnom počítači s akýmkoľvek hypervízorom.

Obsah:

Výber servera VNC
Inštalácia a konfigurácia
Spustenie služby cez systemd
Pripojenie k počítaču

Výber servera VNC

Služba VNC môže byť zabudovaná do virtualizačného systému a hypervízor ju prepojí s emulovanými zariadeniami a nebude potrebná žiadna ďalšia konfigurácia. Táto možnosť zahŕňa značnú réžiu a nie je podporovaná všetkými poskytovateľmi – dokonca aj pri implementácii menej náročnej na zdroje, keď sa namiesto emulácie skutočného grafického zariadenia na virtuálny stroj prenesie zjednodušená abstrakcia (framebuffer). Niekedy je VNC server viazaný na spustený X server, ale táto metóda je vhodnejšia na prístup k fyzickému stroju a na virtuálnom spôsobuje množstvo technických problémov. Najjednoduchší spôsob inštalácie servera VNC je pomocou vstavaného servera X. Nevyžaduje fyzické zariadenia (video adaptér, klávesnicu a myš) ani ich emuláciu pomocou hypervízora, a preto je vhodný pre akýkoľvek typ VPS.

Inštalácia a konfigurácia

Budeme potrebovať virtuálny stroj s Ubuntu Server 18.04 LTS v predvolenej konfigurácii. V štandardných úložiskách tejto distribúcie je niekoľko serverov VNC: TightVNC, TigerVNC, x11vnc a ďalšie. Rozhodli sme sa pre TigerVNC - aktuálny fork TightVNC, ktorý vývojár nepodporuje. Nastavenie ostatných serverov sa vykonáva podobným spôsobom. Treba si vybrať aj desktopové prostredie: optimálnou možnosťou by podľa nás bolo XFCE vzhľadom na relatívne nízke nároky na výpočtové zdroje. Tí, ktorí chcú, si môžu nainštalovať ďalšie DE alebo WM: všetko závisí od osobných preferencií, ale výber softvéru priamo ovplyvňuje potrebu pamäte RAM a výpočtových jadier.

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

Inštalácia desktopového prostredia so všetkými závislosťami sa vykonáva pomocou nasledujúceho príkazu:

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

Ďalej musíte nainštalovať server VNC:

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

Spustiť ho ako superužívateľ je zlý nápad. Vytvorte používateľa a skupinu:

sudo adduser vnc

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

Pridajme používateľa do skupiny sudo, aby mohol vykonávať úlohy súvisiace s administráciou. Ak to nie je potrebné, môžete tento krok preskočiť:

sudo gpasswd -a vnc sudo

Ďalším krokom je spustenie servera VNC s používateľskými oprávneniami vnc na vytvorenie bezpečného hesla a konfiguračných súborov v adresári ~/.vnc/. Dĺžka hesla môže byť od 6 do 8 znakov (nadbytočné znaky sú orezané). V prípade potreby je nastavené aj heslo len na prezeranie, t.j. bez prístupu ku klávesnici a myši. Nasledujúce príkazy sa vykonajú ako používateľ vnc:

su - vnc
vncserver -localhost no

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04
Štandardne používa protokol RFB rozsah portov TCP od 5900 do 5906 – ide o tzv. zobrazovacie porty, z ktorých každý zodpovedá obrazovke X servera. V tomto prípade sú porty spojené s obrazovkami od :0 do :6. Inštancia servera VNC, ktorú sme spustili, počúva port 5901 (obrazovka: 1). Ostatné inštancie môžu fungovať na iných portoch s obrazovkami :2, :3 atď. Pred ďalšou konfiguráciou je potrebné zastaviť server:

vncserver -kill :1

Príkaz by mal zobraziť niečo takéto: „Killing Xtigervnc process ID 18105... success!“

Keď sa TigerVNC spustí, spustí skript ~/.vnc/xstartup na konfiguráciu konfiguračných nastavení. Vytvorme si vlastný skript, najskôr si uložíme záložnú kópiu existujúceho skriptu, ak existuje:

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

Relácia desktopového prostredia XFCE sa spúšťa nasledujúcim skriptom xstartup:

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

Príkaz xrdb je potrebný pre VNC na čítanie súboru .Xresources v domovskom adresári. Používateľ tam môže definovať rôzne nastavenia grafickej plochy: vykresľovanie písma, farby terminálu, motívy kurzora atď. Skript musí byť spustiteľný:

chmod 755 ~/.vnc/xstartup

Tým sa dokončí nastavenie servera VNC. Ak ho spustíte príkazom vncserver -localhost no (ako používateľ vnc), môžete sa pripojiť pomocou predtým zadaného hesla a uvidíte nasledujúci obrázok:

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

Spustenie služby cez systemd

Ručné spustenie servera VNC nie je vhodné na bojové použitie, preto nakonfigurujeme systémovú službu. Príkazy sa vykonávajú ako root (používame sudo). Najprv vytvorte nový súbor jednotky pre náš server:

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

Symbol @ v názve vám umožňuje zadať argument na konfiguráciu služby. V našom prípade určuje port displeja VNC. Súbor jednotiek pozostáva z niekoľkých častí:

[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

Potom musíte upozorniť systemd na nový súbor a aktivovať ho:

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

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

Zastavte server VNC, spustite ho ako službu a skontrolujte stav:

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

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

Ak služba beží, mali by sme dostať niečo takéto.

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

Pripojenie k počítaču

Naša konfigurácia nepoužíva šifrovanie, takže sieťové pakety môžu byť zachytené útočníkmi. Okrem toho na serveroch VNC pomerne často nájsť zraniteľné miesta, takže by ste ich nemali otvárať na prístup z internetu. Ak sa chcete bezpečne pripojiť na lokálnom počítači, musíte zabaliť prenos do tunela SSH a potom nakonfigurovať klienta VNC. V systéme Windows môžete použiť grafického klienta SSH (napríklad PuTTY). Z bezpečnostných dôvodov TigerVNC na serveri počúva iba localhost a nie je priamo prístupný z verejných sietí:


sudo netstat -ap |more

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04
V Linuxe, FreeBSD, OS X a iných operačných systémoch podobných UNIX sa tunel z klientskeho počítača vytvorí pomocou nástroja ssh (sshd musí byť spustený na serveri VNC):

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

Voľba -L viaže port 5901 vzdialeného pripojenia na port 5901 na localhost. Voľba -C umožňuje kompresiu a voľba -N hovorí ssh, aby nevykonával vzdialený príkaz. Voľba -l určuje prihlásenie pre vzdialené prihlásenie.

Po nastavení tunela na lokálnom počítači musíte spustiť klienta VNC a vytvoriť pripojenie k hostiteľovi 127.0.0.1:5901 (localhost:5901) pomocou predtým zadaného hesla na prístup k serveru VNC. Teraz môžeme bezpečne komunikovať cez šifrovaný tunel s grafickým desktopovým prostredím XFCE na VPS. Na snímke obrazovky je spustený hlavný nástroj v emulátore terminálu, ktorý ukazuje nízku spotrebu výpočtových zdrojov virtuálneho stroja. Potom bude všetko závisieť od používateľských aplikácií.

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04
Server VNC môžete nainštalovať a nakonfigurovať v systéme Linux na takmer akomkoľvek VPS. To si nevyžaduje drahé a na zdroje náročné konfigurácie s emuláciou grafického adaptéra ani nákup komerčných softvérových licencií. Okrem možnosti systémovej služby, ktorú sme zvažovali, existujú aj ďalšie: spustenie v režime démona (cez /etc/rc.local) pri zavádzaní systému alebo na požiadanie cez inetd. Ten je zaujímavý pre vytváranie konfigurácií pre viacerých používateľov. Internetový superserver spustí VNC server a pripojí k nemu klienta a VNC server vytvorí novú obrazovku a spustí reláciu. Na overenie v rámci neho môžete použiť správcu grafického zobrazenia (napr. LightDM) a po odpojení klienta sa relácia ukončí a všetky programy pracujúce s obrazovkou sa ukončia.

VPS v systéme Linux s grafickým rozhraním: spustenie servera VNC na Ubuntu 18.04

Zdroj: hab.com

Pridať komentár