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
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:
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
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
Š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:
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.
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
sudo netstat -ap |more
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í.
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.
Zdroj: hab.com