Disa disa përdorues e marrin me qira VPS me Windows për të nisur shërbimin e desktopit të largët. E njëjta gjë mund të bëhet edhe në Linux pa vendosur pajisje të veta në një qendër të dhënash ose me qira 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 punë me pajisje celulare. Ka shumë mundësi aplikimi të sistemit Virtual Network Computing (VNC) i bazuar në protokollin Remote FrameBuffer (RFB). Në një artikull të vogël do të flasim se si ta konfiguroni atë në një makinë virtuale me çdo hipervizor.
Përmbajtje:
Zgjedhja e serverit VNC
Shërbimi VNC mund të jetë i integruar në sistemin e virtualizimit, ku hipervizori e lidh atë me pajisjet e emuluara dhe nuk kërkon ndonjë konfigurim të jashtëm. Ky variant përfshin shpenzime të konsiderueshme dhe nuk mb supportedet nga të gjithë ofruesit — madje në një implementim më pak burim-ndijor, kur në vend të emulimit të një pajisjeje reale grafike, makinës virtuale i jepet një abstraksion i thjeshtuar (framebuffer). Herë pas here, serveri VNC lidhet me një server X që është duke punuar, por ky metodë është më e përshtatshme për qasjen në një makinë fizike, ndërsa në një virtuale ajo krijon një sërë vështirësish teknike. Më e lehtë është të instaloni serverin VNC me një server X të integruar. Ai nuk kërkon pajisje fizike (kartela video, tastierë dhe miun) ose emulim të tyre përmes hipervizorit, dhe prandaj është i përshtatshëm për çdo lloj VPS.
Instalimi dhe konfigurimi
Na nevojitet një makinë virtuale me Ubuntu Server 18.04 LTS në konfigurimin e tij të zakonshëm. Në depozitë standarde të këtij distribucioni ka disa serverë VNC: , , dhe të tjerë. Ne u ndalëm në TigerVNC — një fork aktual i TightVNC që nuk mbështetet nga zhvilluesi. Konfigurimi i serverëve të tjerë bëhet në një mënyrë të ngjashme. Gjithashtu, duhet zgjedhur një ambient punimi: variant i optimizuar, sipas mendimit tonë, do të jetë XFCE për shkak të kërkesave relativisht të ulëta për burimet llogaritëse. Ata që dëshirojnë mund të instalojnë një DE ose WM tjetër: këtu gjithçka varet nga preferencat personale, megjithatë zgjedhja e softuerit ndikon drejtpërdrejt në nevojën për memorie të përkohshme dhe bërthama llogaritëse.

Instalimi i ambientit 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-utilsMë pas është e nevojshme të instaloni serverin VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-commonTë nisni atë me privilegje superpërdoruesi është një ide e keqe. Krijojmë një përdorues dhe grup:
sudo adduser vnc 
Do të shtojmë përdoruesin në grupin sudo, në mënyrë që ai të mund të zgjidhë detyrat e lidhura me administrimin. Nëse nuk ka nevojë për këtë, ky hap mund të kalojë:
sudo gpasswd -a vnc sudoNë hapin e ardhshëm, duhet të nisni serverin VNC me privilegjet e përdoruesit vnc, për të krijuar një fjalëkalim të sigurt dhe skedarët e konfigurimit në katalogun ~/.vnc/. Gjatësia e fjalëkalimit mund të jetë nga 6 në 8 karaktere (karakteret e tepërta priten). Nëse është e nevojshme, gjithashtu vendoset një fjalëkalim vetëm për shikim, pra pa akses në tastierë dhe maus. Komandat e mëposhtme ekzekutohen në emër të përdoruesit vnc:
su - vnc
vncserver -localhost no 
Në parazgjedhje, protokolli RFB përdor një gamë TCP-portesh nga 5900 në 5906 — këto janë portet e ekranit, secili prej të cilave korrespondon me një ekran të serverit X. Në këtë rast, portet janë të asociuara me ekranet nga :0 deri në :6. Ekzemplari i serverit VNC që kemi nisur dëgjon portin 5901 (ekrani :1). Ekzemplarë të tjerë mund të punojnë në porte të tjera me ekrane :2, :3 dhe kështu me radhë. Para se të vazhdojmë me konfigurimin, duhet të ndalim serverin:
vncserver -kill :1Komanda duhet të japë një mesazh të ngjashëm me këtë: «Vrasja e procesit Xtigervnc ID 18105… e suksesshme!».
Kur niset 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 ambientit të desktopit XFCE niset 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ë katalogun e shtëpisë. Aty përdoruesi mund të përcaktojë parametra të ndryshëm të desktopit grafike: rendering i fonteve, ngjyrat e terminalit, temat e kursorit etj. Skenari duhet ta bëjmë ekzekutues:
chmod 755 ~/.vnc/xstartupMe këtë, konfigurimi i serverit VNC ka përfunduar. Nëse e nisni atë me komandën vncserver -localhost no (në emër të përdoruesit vnc), mund të lidhni me fjalëkalimin e caktuar më parë dhe të shihni këtë pamje:

Nisja e shërbimit përmes systemd
Nisja manuale e serverit VNC nuk është e përshtatshme për përdorim në mjedise prodhimi, prandaj do të konfiguroni një shërbim sistemor. Komandat ekzekutohen në emër të root (përdorim sudo). Së pari, krijojmë një skedar të ri njësie për serverin tonë:
sudo nano /etc/systemd/system/vncserver@.serviceSimboli @ në emrin lejon kalimin e një argumenti për konfigurimin e shërbimit. Në rastin tonë, ai caktuar 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.targetKjo duhet ta njoftojë systemd rreth shfaqjes së skedarit të ri dhe ta aktivizojë atë:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceNumri 1 në emër përcakton numrin e ekranit.
Ndërpresim serverin VNC, e nisim atë si shërbim dhe kontrollojmë statusin:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1Nëse shërbimi është në punë, ne duhet të marrim një rezultat të ngjashëm.

Lidhja me desktopin
Konfigurimi ynë nuk përdor kriptim, kështu që paketat e rrjetit mund të kapen nga sulmuesit. Për më tepër, në serverat VNC shpesh , kështu që nuk është e rekomandueshme t'i hapni për akses nga interneti. Për një lidhje të sigurt në kompjuterin lokal, duhet të paketoni trafikun në një tunel SSH dhe më pas të konfiguroni klientin VNC. Në Windows mund të përdorni një klient grafik SSH (si PuTTY). Për siguri TigerVNC në server dëgjon vetëm localhost dhe nuk është i aksesueshëm drejtpërdrejt nga rrjetet publike:
sudo netstat -ap |more 
Në Linux, FreeBSD, OS X dhe sisteme të tjera operative të ngjashme me UNIX, tuneli nga kompjuteri klient bëhet me ndihmën e utilitarit ssh (në serverin VNC duhet të jetë e aktivizuar sshd):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipOpsioni -L lidhen 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 definon loginin 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 fjalëkalimin e caktuar më parë për akses në serverin VNC. Tani mund të bashkëveprojmë në mënyrë të sigurt përmes një tuneli të kriptuar me mjedisin grafik të desktopit XFCE në VPS. Në screenshot-in në emulatorin e terminalit është aktivizuar utilitari top, për të treguar konsumimin e papërfillshëm të burimeve të llogaritjes nga makina virtuale. Më pas çdo gjë 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 kërkohen konfiguracione të shtrenjta dhe me burime të mëdha që imitojnë një video-adapter ose blerja e licencave tregtare për softuerin. Përveç mundësisë që kemi shqyrtuar si shërbim sistemor, ka dhe të tjera: nisja në modin demon (përmes /etc/rc.local) gjatë ngarkimit të sistemit ose sipas kërkesës përmes inetd. Opsioni i fundit është interesant për krijimin e konfigurimeve multi-përdorues. Super-serveri interneti do të nisë 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 autentikimin brenda saj, mund të përdoret menaxheri i ekranit grafik (p.sh., ), dhe pasi klienti të shk disconnectojë, seanca do të mbyllet dhe të gjitha programet që punonin me ekranin do të përfundojnë.
Burimi: habr.com
