Disa përdorues studiojnë VPS të përballueshëm me Windows për të nisur shërbimin e desktopit të largët. Të njëjtën gjë mund ta bëni në Linux pa vendosur harduerin tuaj në një datacenter ose duke marrë një server të dedikuar. Disa kanë nevojë për një mjedis grafik të njohur për teste dhe zhvillim ose një desktop të largët me një kanal të gjerë për të punuar nga pajisjet mobile. Ka shumë mundësi përdorimi të sistemit Virtual Network Computing (VNC) të bazuar në protokollin Remote FrameBuffer (RFB). Në një artikull të vogël do të shpjegojmë si ta konfigurojmë atë në një makinë virtuale me çdo hipervizor.
Përmbajtja:
Zgjedhja e serverit VNC
Shërbimi VNC mund të integrohet në sistemin e virtualizimit, me hipervizorin që e lidh atë me pajisjet e emuluara dhe asnjë konfigurim shtesë nuk do të nevojitet. Ky opsion nënkupton shpenzime të konsiderueshme dhe mbështetet nga pak ofrues — madje edhe në një implementim më pak të ngarkuar me burime, kur në vend të emulimit të pajisjes grafike reale, në makinën virtuale i jepet një abstraksion e thjeshtuar (framebuffer). Ndonjëherë, serveri VNC lidhet me një server X në punë, por ky metodë është më e përshtatshme për qasje në një makinë fizike, ndërsa në një virtual krijon një sërë vështirësish teknike. Më e lehta është të instaloni një server VNC me një server X të integruar. Ai nuk kërkon pajisje fizike (adaptori i videos, tastierën dhe miun) ose emulimin e tyre përmes hipervizorit, andaj është i përshtatshëm për çdo lloj VPS-i.
Instalimi dhe konfigurimi
Na nevojitet një makinë virtuale me Ubuntu Server 18.04 LTS në konfigurimin e parazgjedhur. Në depozitën standarde të këtij distribuoni ka disa servera VNC: , , dhe të tjera. Ne u ndalëm te TigerVNC — një fork aktual i TightVNC që nuk mbështetet nga zhvilluesi. Konfigurimi i serverëve të tjerë kryhet në mënyrë të ngjashme. Po ashtu, duhet të zgjidhni një mjedis pune: sipas mendimit tonë, opsioni më i mirë do të ishte XFCE për shkak të kërkesave relativisht të ulëta për burime kompjuterike. Ata që dëshirojnë mund të instalojnë DE ose WM tjetër: këtu gjithçka varet nga preferencat personale, megjithatë zgjedhja e softuerit ndikon drejtpërdrejt në nevojat për memorie dhe bërthama kompjuterike.

Instalimi i mjedisit të punës me të gjitha varësitë kryhet me komandën e mëposhtme:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsPastaj, është e nevojshme të instalohet serveri VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-commonTë ekzekutohet me të drejtat e përdoruesit të superadminit — është një ide e keqe. Krijojmë një përdorues dhe një grup:
sudo adduser vnc 
Do ta shtojmë përdoruesin në grupin sudo, që të mund të zgjidhë detyra të lidhura me administrimin. Nëse nuk ka një nevojë të tillë, ky hap mund të anashkalohet:
sudo gpasswd -a vnc sudoNë hapin e ardhshëm, duhet të aktivizoni serverin VNC me privilegjet e përdoruesit vnc për të krijuar një fjalëkalim të sigurt dhe skedarë konfigurimi në katalogun ~/.vnc/. Gjatësia e fjalëkalimit mund të jetë nga 6 deri në 8 karaktere (karakteret e tepërta do të priten). Nëse është e nevojshme, gjithashtu caktohet një fjalëkalim vetëm për shikim, pra pa qasje në tastierë dhe maus. Komandat e mëposhtme ekzekutohen në emër të përdoruesit vnc:
su - vnc
vncserver -localhost no 
Me default, protokolli RFB përdor një gamë TCP-portesh nga 5900 deri në 5906 — këto janë portet e ekranit, secili prej të cilëve korrespondon me një ekran të serverit X. Portet janë të asociuara me ekranet nga :0 deri në :6. Instanca e serverit VNC që kemi aktivizuar dëgjon në portin 5901 (ekrani :1). Instancat e tjera mund të funksionojnë në porte të tjera me ekrane :2, :3, etj. Para se të vazhdojmë me konfigurimin, duhet të ndalojmë serverin:
vncserver -kill :1Komanda duhet të sjellë një mesazh të tillë: «Killing Xtigervnc process ID 18105… success!».
Kur aktivizohet TigerVNC, ekzekuton skenarin ~/.vnc/xstartup për të konfiguruar parametrat. Le të krijojmë skenarin tonë, duke ruajtur një kopje rezervë të atij ekzistues, nëse ai ekziston:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartupSeanca e mjedisit të punës XFCE fillon me skenarin xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &Komanda xrdb është e nevojshme që sistemi VNC të lexojë skedarin .Xresources në dosjen e shtëpisë. Aty përdoruesi mund të përcaktojë parametra të ndryshëm për mjedisin grafik të punës: renderimin e shkronjave, ngjyrat e terminalit, temat e kursorit, etj. Skripti duhet ta bëjmë të ekzekutueshëm:
chmod 755 ~/.vnc/xstartupMe këtë, konfigurimi i serverit VNC përfundon. Nëse e nisni atë me komandën vncserver -localhost no (në emër të përdoruesit vnc), mund të lidheni me fjalëkalimin e vendosur më parë dhe të shihni këtë pamje:

Nisja e shërbimit nëpërmjet systemd
Nisja manuale e serverit VNC nuk është shumë e përshtatshme për përdorim në prodhim, prandaj ne do të konfigurojmë shërbimin sistemik. Komandat ekzekutohen në emër të root (përdorim sudo). Si fillim, krijojmë një skedar të ri njësie për serverin tonë:
sudo nano /etc/systemd/system/vncserver@.serviceSimboli @ në emër lejon kalimin e një argumenti për konfigurimin e shërbimit. Në rastin tonë, ai përcakton portin e ekranit VNC. Skedari i njësisë përbëhet nga disa seksione:
[Unit]
Description=Serveri TigerVNC
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.targetMë pas, nevojitet të njoftoni systemd përpara se të aktivizoni skedarin e ri:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceNumri 1 në emër përcakton numrin e ekranit.
Ndaluam serverin VNC, e fillojmë atë si shërbim dhe kontrollojmë statusin:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1Nëse shërbimi funksionon, duhet të marrim një rezultat të tillë.

Konektimi në desktop
Konfigurimi ynë nuk përdor enkriptim, prandaj paketat rrjetore mund të kapen nga sulmuesit. Gjithashtu, në serverat VNC shpesh , prandaj nuk është e rekomanduar t'i hapni ato për qasje nga interneti. Për një lidhje të sigurt në kompjuterin lokal, duhet të paketoni trafikun në një tunel SSH dhe pastaj të konfiguroni klientin VNC. Në Windows mund të përdorni një klient grafik SSH (p.sh., PuTTY). Për sigurinë, TigerVNC në server dëgjon vetëm localhost dhe nuk është e qasshme drejtpërdrejt nga rrjetet publike:
sudo netstat -ap |more 
Në Linux, FreeBSD, OS X dhe sisteme të tjera operative që ngjajnë me UNIX, tuneli nga kompjuteri klient bëhet me ndihmën e utilitarit ssh (në server, VNC duhet të ketë aktivizuar sshd):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipOpsioni -L lidh portin 5901 të lidhjes së largët me portin 5901 në localhost. Opsioni -C aktivizon kompresimin, ndërsa -N i tregon utilitarit ssh se nuk ka nevojë të ekzekutojë një komandë të largët. Opsioni -l përcakton login-in për hyrjen e largët në sistem.
Pas konfigurimit të tunelit në kompjuterin lokal, është e nevojshme të nisni klientin VNC dhe të vendosni lidhjen me host-in 127.0.0.1:5901 (localhost:5901), duke përdorur për të hyrë në serverin VNC fjalëkalimin e dhënë më parë. Tani mund të interaktojmë në mënyrë të sigurt përmes një tuneli të koduar me ambientin grafik të desktopit XFCE në VPS. Në screenshot-in e emulatorit të terminalit është nisur utilitari top, për të treguar konsumimin e dobët të burimeve llogaritëse nga makina virtuale. Më tej, gjithçka do të varet nga aplikacionet e përdoruesve.

Instalimi dhe konfigurimi i serverit VNC në Linux mund të bëhet pothuajse në çdo VPS. Për këtë nuk nevojiten konfigurime të shtrenjta dhe me burime të mëdha që simullojnë një grafike ose blerja e licencave komerciale për software. Përveç opcioneve që kemi shqyrtuar, ka edhe të tjera: aktivizimi në modalitetin demon (përmes /etc/rc.local) gjatë ngarkimit të sistemit ose sipas kërkesës përmes inetd. Opsioni i fundit është i dobishëm për të krijuar konfigurime multi-përdoruesish. Super-serveri i internetit do të aktivizojë serverin VNC dhe do të lidhë klientin me të, ndërsa serveri VNC do të krijojë një ekran të ri dhe do të fillojë një seancë. Për autentifikimin brenda saj, mund të përdoret menaxheri vizual i ekranit (për shembull, ), dhe pasi klienti të çaktivizohet, seanca do të mbyllet dhe të gjitha programet që ishin aktiv në ekran do të mbyllen.
Burimi: habr.com
