Mõned kasutajad rendivad suhteliselt odavaid Windowsi VPS-e kaugtöölaudade teenuse käivitamiseks. Sama saab teha ka Linuxis ilma oma riistvara andmekeskusesse paigutamise või dedikeeritud serveri rentimiseta. Kellestki on vajalik tuttav graafiline keskkond testimiseks ja arenduseks või kaugtöölaua juurdepääs suure ribalaiusega mobiilseadmetest töötamiseks. On palju võimalusi, kuidas kasutada Virtual Network Computing (VNC) süsteemi, mis põhineb Remote FrameBuffer (RFB) protokollil. Selles lühikeses artiklis räägime, kuidas seda seadistada virtuaalmasinas, millel on igasugune hüperviisor.
Sisukord:
VNC serveri valimine
VNC teenus võib olla integreeritud virtualiseerimisse, kus hüperviisor seob selle emuleeritud seadmetega ning täiendavat seadistamist ei ole vajalik. See variant eeldab märkimisväärseid ressursside nõudeid ja seda toetavad kaugel kõik teenusepakkujad — isegi vähem ressursimahukates rakendustes, kus virtuaalmasinale edastatakse lihtsustatud abstraktsioon (raamibuffer) reaalse graafilise seadme emuleerimise asemel. Mõnikord seotakse VNC-server töö suure X-serveriga, kuid see meetod sobib rohkem füüsilisele masinale juurdepääsuks ning virtuaalses keskkonnas tekitab see teatud tehnilisi keerukusi. Lihtsaim on installida VNC-server koos sisseehitatud X-serveriga. See ei nõua füüsiliste seadmete (videokaart, klaviatuur ja hiir) olemasolu või neid emuleerimist hüperviisori kaudu, mistõttu sobib see igasuguste VPS-ide jaoks.
Paigaldamine ja seadistamine
Me vajame virtuaalmasinat, millel on Ubuntu Server 18.04 LTS vaikeseadistustes. Selle jaotise standardsete hoidlate seas on mitu VNC-serverit: , , ja teised. Otsustasime jääda TigerVNC juurde — aktuaalne fork arendaja poolt mitte toetatud TightVNC-st. Muude serverite seadistamine toimub sarnasel viisil. Tuleb valida ka töölauakeskkond: meie arvates oleks optimaalseim variant XFCE, kuna see nõuab suhteliselt vähe arvutusressursse. Soovijad võivad installida ka teise DE või WM: siin sõltub kõik isiklikest eelistustest, kuid valitud tarkvara valik mõjutab otsekohe vajadust mälusektori ja arvutuslike südamike järele.

Töölaua keskkonna installimine koos kõigi sõltuvustega toimub järgmise käsu abil:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsJärgmise sammuna tuleb installida VNC-server:
sudo apt-get install tigervnc-standalone-server tigervnc-commonSeda rakendada superkasutaja õigustes on halb mõte. Loome kasutaja ja grupi:
sudo adduser vnc 
Lisame kasutaja sudo gruppi, et ta saaks lahendada haldustöid. Kui sellist vajadust pole, võib selle sammu vahele jätta:
sudo gpasswd -a vnc sudoJärgmises etapis tuleb käivitada VNC-server kasutaja vnc õigustes, et luua turvaline parool ja konfiguratsioonifailid kataloogis ~/.vnc/. Parooli pikkus võib olla 6 kuni 8 märk (ülejäänud kärbitakse). Vajadusel määratakse ka parool ainult vaatamiseks, st ilma klaviatuuri ja hiire juurdepääsuta. Järgmist käsu täidetakse kasutaja vnc nimel:
su - vnc
vncserver -localhost no 
Vaikimisi kasutab RFB-protokoll TCP-portide vahemikku 5900 kuni 5906 — need on nn kuvaportid, millest igaühel on vastav X-serveri ekraan. Need pordid on seotud ekraanidega :0 kuni :6. Meie poolt käivitatud VNC-server kuulab porti 5901 (ekraan :1). Muud eksemplarid võivad töötada teistel portidel ekraanidega :2, :3 jne. Enne edasist seadistamist tuleb server peatada:
vncserver -kill :1Käsk peaks andma umbes sellise teate: „Killing Xtigervnc process ID 18105… success!”.
TigerVNC käivitamisel täidab skript ~/.vnc/xstartup konfiguratsiooni seadistamiseks. Loome oma skripti, salvestades olemasoleva varukoopia, kui see on olemas:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartupXFCE töölaua seanss käivitatakse järgmise xstartup skriptiga:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &Käsk xrdb on vajalik, et VNC süsteem loeks faili .Xresources kodukataloogis. Seal saab kasutaja määrata erinevaid graafilise töölaua parameetreid: fondide renderdamine, terminali värvid, kursori teemad jne. Skript tuleb muuta täidetavaks:
chmod 755 ~/.vnc/xstartupSellega on VNC-serveri seadistus lõpetatud. Kui seda käivitada käsuga vncserver -localhost no (kasutaja vnc nimel), saab sisse logida eelnevalt määratud parooliga ja näha sellist pilti:

Teenuse käivitamine läbi systemd
Manuaalne VNC-serveri käivitamine ei sobi hästi tootmisolukordades, seega seadistame süsteemiteenuse. Käsklused käivitatakse root'i õigustes (kasutame sudo). Alustuseks loome uue ühikufaili meie serveri jaoks:
sudo nano /etc/systemd/system/vncserver@.serviceMärk @ nimes võimaldab edastada argumendi teenuse seadistamiseks. Meie puhul määrab see VNC kuvari porti. Ühikufail koosneb mitmest osast:
[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.targetSeejärel tuleb süsteemi teavitada uue faili olemasolust ja aktiveerida see:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceNumber 1 nimes määrab ekraani numbri.
Peatame VNC-serveri, käivitame selle teenusena ja kontrollime seisundit:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1Kui teenus töötab, peaksime saama umbes sellise tulemuse.

Kaugtöölauale ühendamine
Meie konfiguratsioon ei kasuta krüpteerimist, seega võivad võrgu paketid olla häkkerite poolt kinni püüdetud. Lisaks tuvastatakse VNC-serverites sageli , seega ei tasu neid avada interneti juurdepääsu jaoks. Turvaliseks ühendamiseks tuleb kohaliku arvuti kaudu liiklus pakkida SSH tunnelisse ja seejärel seadistada VNC klient. Windowsis saab kasutada graafilist SSH klienti (nt PuTTY). TigerVNC turvalisuse tagamiseks kuulab server vaid localhost'i ega ole otse kergesti kergesti ligipääsetav avalikest võrkudest:
sudo netstat -ap |more 
Linuxis, FreeBSDs, OS X-is ja teistes UNIX-sarnastes süsteemides luuakse tunnel kliendi arvutist ssh utiliidi abil (VNC-serveris peab olema sshd käimas):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipValik -L seob kauguenduse port 5901 localhosti porti 5901. Valik -C lubab kompressiooni ja -N ütleb ssh utiliidile, et eemalt ei ole vaja käske täita. Valik -l määrab kaugühenduse sisselogimise.
Tunnel seadistamine kohalikus arvutis nõuab VNC kliendi käivitamist ja ühenduse loomist hostiga 127.0.0.1:5901 (localhost:5901), kasutades VNC serveri jaoks eelnevalt määratud parooli. Nüüd saame turvaliselt suhelda krüpteeritud tunneliga XFCE graafilise töölaua keskkonna kaudu VPS-is. Terminali emulaatoris on avatud utiliit top, et näidata virtuaalmasina madalat ressursikasutust. Edasi sõltub kõik kasutaja rakendustest.

VNC serveri paigaldamine ja seadistamine Linuxis on võimalik praktiliselt igal VPS-il. Selleks ei ole vajalikud kallid ja ressursimahukad konfiguratsioonid videodega emuleerimiseks või kommertslitsentside ostmine. Peale meie kaalutud süsteemi teenuse variandi on veel teisi: käivitamine demonrežiimis (läbi /etc/rc.local) süsteemi käivitamisel või nõudmisel inetd kaudu. Viimane on huvitav mitme kasutaja konfiguratsioonide loomisel. Internetsuperserver käivitab VNC serveri ja seob selle kliendiga, samas kui VNC server loob uue ekraani ja alustab seanssi. Autentimiseks võib kasutada graafilist ekraani haldurit (näiteks, ), kuid pärast kliendi lahkemist seanss suletakse ja kõik ekraanil töötavad programmid lõpetatakse.
Allikas: habr.com
