VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04
Niektorí používatelia prenajímajú relatívne lacné VPS s Windows na spustenie služby vzdialených pracovných stolov. To isté je možné urobiť aj na Linuxe bez umiestnenia vlastného hardvéru v dátovom centre alebo prenájmu dedikovaného servera. Niekomu je potrebné známe grafické prostredie na testovanie a vývoj alebo vzdialený desktop s širokým prenosom na prácu z mobilných zariadení. Existuje množstvo možností použitia systému Virtual Network Computing (VNC) založeného na protokole Remote FrameBuffer (RFB). V malej článku vám ukážeme, ako ho nastaviť na virtuálnom stroji s akýmkoľvek hypervízorom.

Obsah:

Výber servera VNC
Inštalácia a nastavenie
Spustenie služby cez systemd
Pripojenie k desktopu

Výber servera VNC

Služba VNC môže byť integrovaná do virtualizačného systému, pričom hypervízor ju prepojí s emulovanými zariadeniami, a teda nebude potrebná žiadna dodatočná konfigurácia. Táto možnosť predpokladá značné prevádzkové náklady a podporuje ju len máloktorý poskytovateľ — aj v menej náročnej implementácii, keď sa namiesto emulácie skutočného grafického zariadenia prevádza virtuálnemu stroju zjednodušená abstrakcia (framebuffer). Niekedy sa VNC server viaže na bežiaci X server, ale tento spôsob je vhodnejší na prístup k fyzickému stroju, zatiaľ čo na virtuálnom strojí vytvára množstvo technických komplikácií. Najjednoduchšie je nainštalovať VNC server so zabudovaným X serverom. Nepotrebuje fyzické zariadenia (grafická karta, klávesnica a myš) ani ich emuláciu pomocou hypervízora, a preto je vhodný pre VPS akéhokoľvek typu.

Inštalácia a nastavenie

Potrebujeme virtuálny stroj s Ubuntu Server 18.04 LTS v predvolenej konfigurácii. V štandardných repozitároch tohto distribútu je niekoľko VNC serverov: TightVNC, TigerVNC, x11vnc a ďalšie. Zastavili sme sa na TigerVNC — aktuálnom forku nepodporovaného vývojárom TightVNC. Nastavenie iných serverov sa vykonáva podobným spôsobom. Rovnako je potrebné vybrať prostredie pracovnej plochy: optimálnou voľbou je podľa nášho názoru XFCE kvôli relatívne nízkym požiadavkám na výpočtové zdroje. Tí, ktorí chcú, môžu nainštalovať iný DE alebo WM: tu všetko závisí od osobných preferencií, avšak výber softvéru priamo ovplyvňuje potrebu po operačnej pamäti a výpočtových jadrách.

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

Inštalácia prostredia pracovnej plochy so všetkými závislosťami sa vykonáva nasledujúcim príkazom:

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

Ďalej je potrebné nainštalovať server VNC:

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

Spúšťať ho s oprávneniami superužívateľa nie je dobrý nápad. Vytvorte používateľa a skupinu:

sudo adduser vnc

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

Pridáme používateľa do skupiny sudo, aby mohol riešiť úlohy súvisiace s administráciou. Ak nie je táto potreba, tento krok možno preskočiť:

sudo gpasswd -a vnc sudo

V ďalšom kroku je potrebné spustiť server VNC s privilegiumami používateľa vnc, aby sa vytvorilo bezpečné heslo a konfiguračné súbory v adresári ~/.vnc/. Dĺžka hesla môže byť od 6 do 8 znakov (prebytočné znaky sa orezávajú). Ak je potrebné, môže sa tiež nastaviť heslo len na prezeranie, t. j. bez prístupu k klávesnici a myši. Nasledujúce príkazy sa vykonávajú menom používateľa vnc:

su - vnc
vncserver -localhost no

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04
Vo výchozom nastavení protokol RFB používa rozsah TCP-portov od 5900 do 5906 — to sú tzv. porty displeja, z ktorých každý zodpovedá obrazovke X-servera. Porty sú priradené k obrazovkám od :0 po :6. Spustený server VNC počúva na porte 5901 (obrazovka :1). Ďalšie inštancie môžu bežať na iných portoch s obrazovkami :2, :3 atď. Pred ďalšou konfiguráciou je potrebné server zastaviť:

vncserver -kill :1

Príkaz by mal vypísať zhruba správu: „Killing Xtigervnc process ID 18105… success!“.

Pri spustení TigerVNC vykonáva skript ~/.vnc/xstartup na nastavenie konfiguračných parametrov. Vytvoríme si vlastný skript, na začiatku zálohujúci existujúci, ak existuje:

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

Sedenie prostredia pracovnej plochy 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ý na to, aby systém VNC prečítal súbor .Xresources v domácom adresári. Tam si používateľ môže definovať rôzne parametre grafického pracovného prostredia: rendering písma, farby terminálu, témy kurzora atď. Skript treba nastaviť ako vykonateľný:

chmod 755 ~/.vnc/xstartup

Týmto je konfigurácia servera VNC dokončená. Ak ho spustíte príkazom vncserver -localhost no (menom používateľa vnc), môžete sa pripojiť s predtým zadaným heslom a vidieť nasledujúci obraz:

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

Spustenie služby cez systemd

Ručné spustenie servera VNC sa na bojové účely veľmi nehodí, preto si nastavíme systémovú službu. Príkazy sa vykonávajú pod menom root (používame sudo). Najprv vytvoríme nový jednotkový súbor pre náš server:

sudo nano /etc/systemd/system/vncserver@.service

Symbol @ v názve umožňuje odovzdať argument na konfiguráciu služby. V našom prípade určuje port displeja VNC. Jednotkový súbor sa skladá z viacerých sekcií:

[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 je potrebné informovať systemd o novom súbore a aktivovať ho:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

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

Zastavíme server VNC, spustíme ho ako službu a skontrolujeme stav:

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

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

Ak služba beží, mali by sme získať približne takýto výsledok.

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

Pripojenie k desktopu

Naša konfigurácia nevyužíva šifrovanie, takže sieťové pakety môžu byť zachytené útočníkmi. Okrem toho sa na serveroch VNC pomerne často nájdu zraniteľnosti, a preto ich neodporúčame otvárať pre prístup z internetu. Pre bezpečné pripojenie na lokálnom počítači je potrebné zabaliť prenos do SSH tunela a potom nastaviť klienta VNC. Pod Windows môžete použiť grafického klienta SSH (napríklad PuTTY). Pre bezpečnosť TigerVNC na serveri počúva iba na localhost a nie je prístupný priamo z verejných sietí:


sudo netstat -ap |more

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04
V Linuxe, FreeBSD, OS X a iných unixových systémoch sa tunel z klientského počítača vykonáva pomocou nástroja ssh (na serveri VNC musí bežať sshd):

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

Možnosť -L viaže port 5901 vzdialeného pripojenia na port 5901 na localhost. Možnosť -C zapína kompresiu a -N hovorí nástroju ssh, že nie je potrebné vykonávať vzdialenú príkazovú operáciu. Možnosť -l určuje prihlasovacie meno pre vzdialený prístup.

Po nastavení tunelu na lokálnom počítači je potrebné spustiť klienta VNC a pripojiť sa k hostiteľovi 127.0.0.1:5901 (localhost:5901) pomocou hesla, ktoré sme predtým nastavili pre prístup k VNC serveru. Teraz môžeme bezpečne interagovať cez šifrovaný tunel s grafickým prostredím pracovného stola XFCE na VPS. Na obrazovke emulátora terminálu je spustený nástroj top, aby sme ukázali minimálnu spotrebu výpočtových zdrojov virtuálnou strojom. Ďalej to všetko závisí od používateľských aplikácií.

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04
Nastaviť a nakonfigurovať server VNC na Linuxe je možné prakticky na akomkoľvek VPS. Na to nie sú potrebné nákladné a náročné konfigurácie s emuláciou grafickej karty alebo nákup komerčných licencií na softvér. Okrem nami preberaného variantu systémovej služby existujú aj iné: spúšťanie v režime démona (cez /etc/rc.local) pri štarte systému alebo na požiadanie cez inetd. Posledný variant je zaujímavý pre vytváranie viacužívateľských konfigurácií. Internetový superserver spustí server VNC a spojí ho s klientom, pričom VNC server vytvorí novú obrazovku a začne reláciu. Na autentifikáciu v jej rámci je možné použiť grafický displejový manažér (napríklad, LightDM), a po odpojení klienta bude relácia uzavretá a všetky programy pracujúce s obrazovkou budú ukončené.

VPS na Linuxe s grafickým rozhraním: spúšťame server VNC na Ubuntu 18.04

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster