Mõned kasutajad rendivad suhteliselt odavaid Windowsi VPS-e kaug-töölaua teenuse käitamiseks. Sama saab teha ka Linuxis, ilma et oleks vaja paigutada enda riistvara andmekeskusesse või rentida eraldi serverit. Mõnedel on vaja tuttavat graafilist keskkonda testimiseks ja arendamiseks või kaug-desktoopi laia ribaga, et töötada mobiilseadmetelt. Virtual Network Computing (VNC), mis põhineb Remote FrameBuffer (RFB) protokollil, pakub hulgaliselt rakendusi. Lühikeses artiklis räägime, kuidas seda seadistada virtuaalses masinas, kasutades igasuguseid hüperviseerijaid.
Sisukord:
VNC serveri valik
VNC teenus võib olla integreeritud virtualiseerimissüsteemi, kus hüperviisor seob selle emuleeritud seadmetega, mistõttu ei ole vaja täiendavat seadistamist. See variant eeldab märkimisväärseid kulusid ja ei ole toetatud kõikide pakkujate poolt — isegi vähem ressursinõudlikus rakenduses, kus virtuaalmasinale edastatakse lihtsustatud abstraktsioon (framebuffer) reaalse graafilise seadme emuleerimise asemel. Mõnikord seotakse VNC-server töötava X-serveriga, kuid see meetod sobib paremini füüsilise masina juurdepääsuks ning virtuaalses keskkonnas loob see mitmeid tehnilisi keerukusi. Lihtsaim viis on paigaldada VNC-server koos sisseehitatud X-serveriga. See ei nõua füüsiliste seadmete (videokaardi, klaviatuuri ja hiire) olemasolu ega nende emuleerimist hüperviisori kaudu, seega on see sobiv igat tüüpi VPS-ile.
Installeerimine ja seadistamine
Me vajame virtuaalmasinat, kus on Ubuntu Server 18.04 LTS vaikimisi konfiguratsiooniga. Selle distributsiooni standardsetes hoidlates on mitu VNC-serverit: , , ja ja muud. Ostsime TigerVNC — tänapäeva haru mitte toetatavast TightVNC-st. Muude serverite seadistamine toimub sarnasel viisil. Samuti tuleb valida kasutajaliidese keskkond: me arvame, et parim variant on XFCE, kuna sellel on suhteliselt madalad arvutusressursside nõuded. Soovi korral võib installida teisi DE või WM: see sõltub isiklikest eelistustest, kuid tarkvara valik mõjutab otseselt mälu ja protsessorituumade vajadust.

Töölaua keskkonna koos kõigi sõltuvustega installimiseks käivitage järgmine käsk:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsEdasi tuleb installida VNC server:
sudo apt-get install tigervnc-standalone-server tigervnc-commonKäivitamine superkasutaja õigustes on halb mõte. Loome kasutaja ja grupi:
sudo adduser vnc 
Lisame kasutaja sudo rühma, et ta saaks hallata administraatoriga seotud ülesandeid. Kui sellist vajadust ei ole, võib selle sammu vahele jätta:
sudo gpasswd -a vnc sudoJärgmise sammu puhul tuleb VNC server käivitada kasutaja vnc õigustes, et luua turvaline parool ja konfiguratsioonifailid kataloogis ~/.vnc/. Parooli pikkus võib olla 6 kuni 8 sümbolit (ülejäänud kärbitakse). Vajadusel määratakse ka vaate parool, st ilma pääsu õigusteta klaviatuurile ja hiirele. Järgmised käsud täidetakse kasutaja vnc nimel:
su - vnc
vncserver -localhost no 
Vaikimisi kasutab RFB protokoll TCP-portide vahemikku 5900 kuni 5906 – need on nn ekraanipordid, millest igaüks vastab X-serveri ekraanile. Samuti on portidega seotud ekraanid :0 kuni :6. Meie käivitatud VNC-serveri eksemplar kuulab porti 5901 (ekraan :1). Ülejäänud eksemplarid võivad töötada teistel portidel ekraanidega :2, :3 jne. Enne edasist seadistamist tuleb server peatada:
vncserver -kill :1Käsk peaks väljastama umbes sellise sõnumi: «Killing Xtigervnc process ID 18105… success!».
TigerVNC käivitamisel täidab see skripti ~/.vnc/xstartup konfiguratsiooniseadete seadistamiseks. Loome enda skripti, tehes eelnevalt olemasolevast varukoopia, kui see eksisteerib:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartupXFCE töölaudade keskkonna seanss käivitub järgmise xstartup skripti abil:
#!/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 .Xresources faili kodukataloogis. Seal saab kasutaja määrata erinevaid graafilise töölaudade parameetreid: fonte renderdamine, terminali värvid, kursori teemad jne. Skript tuleb teha käivitatavaks:
chmod 755 ~/.vnc/xstartupVNC-serveri seadistamine on lõpetatud. Kui käivitada see käsuga vncserver -localhost no (kasutaja vnc alt), saab ühendust luua määratud parooliga ning nähtavale tuleb järgmine pilt:

Teenuse käivitamine läbi systemd
VNC-serveri käsitsi käivitamine ei sobi tootmiskeskkonda, seetõttu seadistame süsteemiteenuse. Komandeid täidetakse root'i õigustes (kasutame sudo). Alustuseks loome uue unit-faili meie serveri jaoks:
sudo nano /etc/systemd/system/vncserver@.serviceSümbol @ failinimes võimaldab edastada argument teenuse seadistamiseks. Meie puhul määrab see VNC kuva pordi. Unit-fail 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 systemd'le teatada, et uus fail on olemas ja aktiveerida see:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceNumbriga 1 failinimes määratakse ekraani number.
Seisame VNC-serveri, käivitame selle teenusena ja kontrollime staatust:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1Kui teenus töötab, peaksime saama umbes sellise tulemuse.

Ühendamine töölauaga
Meie konfiguratsioon ei kasuta krüptimist, mistõttu võivad võrgupaketid sattuda ründajate kätte. Lisaks leiduvad VNC-serverites sageli , seetõttu ei ole mõistlik neid avada internetiühenduseks. Turvaliseks ühendamiseks peab kohaliku arvuti liiklus olema pakitud SSH-tunnelisse ning seejärel peab olema seatud VNC klient. Windowsis võib kasutada graafilist SSH klienti (näiteks PuTTY). Turvalisuse tagamiseks kuulab TigerVNC serveris ainult localhost'i ja ei ole otse kergesti ligipääsetav avalikest võrkudest:
sudo netstat -ap |more 
Linuxis, FreeBSD-s, OS X-is ja teistes UNIX-taolistel opsüsteemidel luuakse tunnel klientarvuti kaudu ssh utiliidi abil (VNC serveris peab olema sshd käivitatud):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipLipp -L seob kaugühenduse portaali 5901 localhost'i 5901 porti. Lipp -C lubab tihendamist, samas kui -N ütleb ssh utiliidile, et kaugel komanda täitmine ei ole vajalik. Lipp -l määrab sisselogimise kaugjuhtimise jaoks.
Tunnelile seadistamise järel tuleb käivitada VNC klient ja luua ühendus hostiga 127.0.0.1:5901 (localhost:5901), kasutades VNC serverile eelnevalt määratud parooli. Nüüd saame ohutult suhelda šifreeritud tunneliga XFCE graafilise töölaudade keskkonnas VPS-is. Terminali emulaatori ekraanipildil on käivitunud utiliit top, et näidata virtuaalmasina vähest arvutusressursside kasutust. Edasi sõltub kõik kasutaja rakendustest.

VNC server'i seadistamine ja konfigureerimine Linuxis on võimalik praktiliselt igas VPS-is. Selleks ei vaja te kulukaid ja ressursimahukaid konfiguratsioone videoadapteri emuleerimisega ega ka kommertslitsentse tarkvara jaoks. Peale meie käsitletud süsteemiteenuse variandi on olemas ka teised: käivitamine deemonirežiimis (kasutades /etc/rc.local) süsteemi käivitamisel või nõudmisel läbi inetd. Viimane on huvitav mitme kasutaja konfiguratsioonide loomiseks. Interneti superserver käivitab VNC serveri ja ühendab selle kliendiga, samal ajal kui VNC server loob uue ekraani ja alustab seanssi. Seespool autentimiseks on võimalik kasutada graafilist ekraanihaldurit (näiteks, ), ning pärast kliendi eemaldamist seanss suletakse ja kõik ekraaniga töötavad programmid lõpetatakse.
Allikas: habr.com
