Në Ne kemi shqyrtuar shpërbërjen e serverit VNC në një makinë virtuale të çdo lloji. Kjo metodë ka shumë disavantazhe, nga të cilat kërkesat e larta për bandë kaluese janë kryesore. Sot do të provojmë të lidhemi me desktopin grafik në Linux përmes RDP (Protokolli i Desktopit të Largët). Sistemi VNC bazohet në transferimin e maseve të pikselëve përmes protokollit RFB (Remote Framebuffer), ndërsa RDP lejon dërgimin e primitiveve grafike më komplekse dhe komandave në nivele më të larta. Zakonetësisht përdoret për organizimin e shërbimeve të desktopit të largët në Windows, por servery për Linux janë gjithashtu të disponueshëm.
Përmbajtje:
Instalimi i ambientit grafik
Ne do të marrim një makinë virtuale me Ubuntu Server 18.04 LTS me dy bërthama procesori, katër gigabajt RAM dhe një disk të ngurtë (HDD) prej twenty gigabajt. Një konfigurim më i dobët nuk është i përshtatshëm për një desktop grafik, edhe pse kjo varet nga detyrat që zgjidhni. Mos harroni të përdorni kodin promocional Habrahabr10 për të marrë një zbritje prej 10% në porosi.

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-utilsSi në rastin e mëparshëm, ne zgjodhëm XFCE për shkak të kërkesave relativisht të ulëta për burimet përpunuese.
Ruisifikimi i serverit dhe instalimi i programeve
Shpesh makinat virtuale vendosen vetëm me lokalizim në anglisht. Në desktop mund të kërkohet një lokalizim në rusisht, të cilin nuk është e vështirë ta konfiguroni. Së pari, do të instalojmë përkthimet e programeve sistemike:
sudo apt-get install language-pack-ruLe të konfiguroni lokalizimin:
sudo update-locale LANG=ru_RU.UTF-8E njëjta efekt mund të arrihet duke redaktuar manualisht skedarin /etc/default/locale.
Për lokalizimin e GNOME dhe KDE, në repositor ka paketa language-pack-gnome-ru dhe language-pack-kde-ru — këto do t'ju nevojiten nëse do të përdorni programe nga këto ambiente desktopi. Në XFCE, përkthimet instalohen së bashku me aplikacionet. Më pas, mund të instaloni fjalorët:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictPërveç kësaj, instalimi i përkthimeve mund të kërkohet për disa programe aplikacioni:
# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru
# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru
# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ruMe këtë, përgatitja e ambientit të punës përfundon, mbetet vetëm të konfigurohet serveri RDP.
Instalimi dhe konfigurimi i serverit RDP
Në repositorët e Ubuntu ka një server të shpërndarë falas Xrdp, të cilin do ta përdorim:
sudo apt-get install xrdpNëse gjithçka shkoi mirë, serveri duhet të nisë automatikisht:
sudo systemctl status xrdp 
Serveri Xrdp niset me të drejtat e përdoruesit xrdp dhe siç është standart merr certifikatën /etc/ssl/private/ssl-cert-snakeoil.key, e cila mund të zëvendësohet me të tuajën. Për të pasur qasje për të lexuar skedarin, duhet të shtoni përdoruesin në grupin ssl-cert:
sudo adduser xrdp ssl-certParametrat e parazgjedhura mund të gjenden në skedarin /etc/default/xrdp, ndërsa të gjitha skedarët tjetër të konfigurimit të serverit ndodhen në katalogun /etc/xrdp. Parametrat kryesorë janë në skedarin xrdp.ini, të cilin nuk është e nevojshme ta ndryshoni. Konfigurimi është mirë dokumentuar, dhe gjithashtu bashkë me të janë të disponueshme faqet përkatëse të manpages:
man xrdp.ini
man xrdpMbetet vetëm të redaktojmë skriptin /etc/xrdp/startwm.sh, i cili ekzekutohet gjatë fillimit të sesionit të përdoruesit. Fillimisht do të bëjmë një kopje rezervë të skriptit nga distribuimi:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shPër të nisur ambientin e desktopit XFCE, do të duhen një skenar me përmbajtje të tillë:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Kujdes: Në skripte është më mirë të specifikoni rrugën e plotë për skedarët ekzekutivë — është një zakon i mirë. Ta bëjmë skriptin ekzekutiv dhe kështu konfigurimi i serverit Xrdp mund të konsiderohet i përfunduar:
sudo chmod 755 /etc/xrdp/startwm.shRinisim serverin:
sudo systemctl restart xrdp
Konfigurimi i murit të zjarrit
Për default, Xrdp dëgjon TCP-portin 3389 në të gjitha ndërfaqet. Në varësi të konfigurimit të serverit virtual, mund të jetë e nevojshme të konfiguroni firewall-in Netfilter. Në Linux, kjo zakonisht bëhet me ndihmën e utilitetit iptables, por në Ubuntu është më mirë të përdorni ufw. Nëse adresa IP e klientit është e njohur, konfigurimi bëhet me komandën e mëposhtme:
sudo ufw allow from IP_Address to any port 3389Lejo lidhjet nga çdo IP mund të bëhet kështu:
sudo ufw allow 3389Protokolli RDP mbështet enkriptimin, por hapja e aksesit në serverin Xrdp nga rrjetet publike është një ide e keqe. Nëse klienti nuk ka një IP të fiksuar, për të rritur nivelin e sigurisë, serveri duhet të dëgjojë vetëm localhost. Aksesin është më mirë ta konfigurojmë përmes një tuneli SSH, i cili do të ridrejtojë trafikun nga kompjuteri i klientit në mënyrë të sigurt. Një qasje të tillë ne për serverin VNC.
Lidhja me serverin RDP
Për të punuar me ambientin e desktopit, është më mirë të krijoni një përdorues të veçantë pa privilegje:
sudo adduser rdpuser 
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 rdpuser sudoMund të lidhemi me serverin duke përdorur çdo klient RDP, duke përfshirë klientin e integruar të shërbimit të desktopëve të largët të Windows. Nëse Xrdp dëgjon në ndërfaqen e jashtme, nuk do të nevojiten lëvizje të tjera. Mjafton të specifikoni në konfigurimet e lidhjes adresën IP të VPS, emrin e përdoruesit dhe fjalëkalimin. Pas lidhjes, do të shohim një pamje të tillë:

Pas pasqyrimin fillestar të mjedisit të desktopit, ne do të kemi një desktop të plotë. Siç e shihni, ai konsumon jo shumë burime, ndonëse më pas gjithçka do të varet nga aplikacionet që do të përdoren.

Nëse serveri Xrdp dëgjon vetëm localhost, trafiku në kompjuterin klient do të duhet të paketizohet në një tunel SSH (në VPS duhet të jetë i nisur sshd). Nën Windows mund të përdorni një klient grafik SSH (p.sh., PuTTY), ndërsa në sistemet UNIX nevojitet utilitari ssh:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipPas inicializimit të tunelit, klienti RDP do të lidhet tashmë jo me serverin e largët, por me hostin lokal.
Me pajisjet mobile është më e komplikuar: do të duhet të blini klientë SSH që mund të ngrejnë një tunel, ndihmuar nga optimizimi shumë i mirë i konsumit të energjisë në iOS dhe iPadOS. Në iPhone dhe iPad, ngritja e një tuneli në një aplikacion të veçantë nuk bëhet — nevojitet një aplikacion-kombinator që vetë di të krijojë një lidhje RDP përmes SSH. Një shembull është .
Menaxheri i sesioneve dhe sesionet e përdoruesve
Mundësia e punës shumë përdorueshe realizohet drejtpërdrejt në serverin Xrdp dhe nuk kërkon konfigurim shtesë. Pas nisjes së shërbimit përmes systemd, një proces punon në modin demon, dëgjon portin 3389 dhe ndërvepron përmes localhost me menaxherin e seancave.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
Menaxheri i seancave zakonisht nuk është i dukshëm për përdoruesit, sepse të dhënat e regjistrit dhe fjalëkalimit të caktuara në konfigurimin e klientit i dërgohen atij automatikisht. Nëse kjo nuk ka ndodhur ose ka një gabim gjatë autentifikimit, në vend të desktopit do të shfaqet një dritare interaktive për t'u lidhur në sistem.

Nisja automatike e menaxherit të seancave është e regjistruar në skedarin /etc/default/xrdp, ndërsa konfigurimi ruhet në /etc/xrdp/sesman.ini. Nga ana e parë, duket më pak kështu:
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; Kur AlwaysGroupCheck=false, akses do të lejohet
; nëse grupi TerminalServerUsers nuk është i definuar.
AlwaysGroupCheck=false
[Sessions]Këtu nuk ka nevojë të ndryshohet asgjë, vetëm duhet të ndalohet hyrja me të drejtat root (AllowRootLogin=false). Për çdo përdorues të autentikuar në sistem, fillohet një proces i veçantë xrdp: nëse shkëputeni pa mbyllur seancën, proceset e përdoruesit do të vazhdojnë të punojnë si zakonisht dhe do të mund të lidhni përsëri në seancë. Rregullimet mund të ndryshohen në skedarin /etc/xrdp/sesman.ini (seksioni [Sessions]).
Ndërrimi i disponimeve të tastierës
Me bufer të dyanshëm, zakonisht nuk ka probleme, por me rregullimin rus të tastierës do të duhet të bëni pak magji (lokali rus duhet të jetë tashmë ). Do të editojmë rregullimet e tastierës në serverin Xrdp:
sudo nano /etc/xrdp/xrdp_keyboard.iniNë fund të skedarit të konfigurimit duhet të shtoni këto rreshta:
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ruMbetet të ruani skedarin dhe të rip filloni Xrdp:
sudo systemctl restart xrdpSiç e shihni, ngritja e serverit RDP në një VPS Linux nuk është e komplikuar, dhe në ne tashmë kemi shqyrtuar rregullimin VNC. Përveç këtyre teknologjive, ka një variant tjetër interesant: sistemi X2Go që përdor një protokoll të modifikuar NX 3. Me të do të merremi në publikimin tjetër.
Burimi: habr.com
