В razgovarali smo o pokretanju VNC poslužitelja na virtualnom računalu bilo koje vrste. Ova opcija ima puno nedostataka, od kojih su glavni visoki zahtjevi za propusnost kanala za prijenos podataka. Danas ćemo se pokušati spojiti na grafičku radnu površinu na Linuxu putem RDP-a (Remote Desktop Protocol). VNC sustav temelji se na prijenosu nizova piksela pomoću RFB (Remote Framebuffer) protokola, a RDP vam omogućuje slanje složenijih grafičkih primitiva i naredbi visoke razine. Obično se koristi za pružanje usluga udaljene radne površine u sustavu Windows, ali dostupni su i poslužitelji za Linux.
Oglašavanje:
Instalacija grafičkog okruženja
Uzet ćemo virtualni stroj s Ubuntu Serverom 18.04 LTS s dvije računalne jezgre, četiri gigabajta RAM-a i tvrdim diskom (HDD) od dvadeset gigabajta. Slabija konfiguracija nije prikladna za grafičku radnu površinu, iako to ovisi o zadacima koji se rješavaju. Ne zaboravite iskoristiti promo kod Habrahabr10 kako biste ostvarili popust od 10% na svoju narudžbu.

Instalacija desktop okruženja sa svim ovisnostima vrši se sljedećom naredbom:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsKao i u prethodnom slučaju, odabrali smo XFCE zbog njegovih relativno niskih zahtjeva za računalnim resursima.
Rusifikacija poslužitelja i instalacija softvera
Često se virtualni strojevi postavljaju samo s engleskom lokalizacijom. Na radnoj površini možda će vam trebati ruski, koji je jednostavan za postavljanje. Najprije instalirajmo prijevode za sistemske programe:
sudo apt-get install language-pack-ruPostavimo lokalizaciju:
sudo update-locale LANG=ru_RU.UTF-8Isti se učinak može postići ručnim uređivanjem /etc/default/locale.
Za lokalizaciju GNOME-a i KDE-a, repozitorij ima pakete language-pack-gnome-ru i language-pack-kde-ru - trebat će vam ako koristite programe iz ovih desktop okruženja. U XFCE-u, prijevodi se instaliraju s aplikacijama. Zatim možete instalirati rječnike:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictOsim toga, instalacija prijevoda može biti potrebna za neke aplikacijske programe:
# Браузер 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-ruOvime je završena priprema okruženja radne površine, preostaje samo konfigurirati RDP poslužitelj.
Instalacija i konfiguracija RDP poslužitelja
Ubuntu repozitoriji imaju slobodno distribuiran Xrdp poslužitelj, koji ćemo koristiti:
sudo apt-get install xrdpAko je sve prošlo dobro, server bi se trebao pokrenuti automatski:
sudo systemctl status xrdp 
Xrdp poslužitelj radi s xrdp korisničkim pravima i prema zadanim postavkama uzima certifikat /etc/ssl/private/ssl-cert-snakeoil.key koji se može zamijeniti vašim vlastitim. Da biste imali pristup čitanju datoteke, morate dodati korisnika u grupu ssl-cert:
sudo adduser xrdp ssl-certZadane postavke mogu se pronaći u datoteci /etc/default/xrdp, a sve ostale konfiguracijske datoteke poslužitelja nalaze se u direktoriju /etc/xrdp. Glavni parametri nalaze se u datoteci xrdp.ini koju nije potrebno mijenjati. Konfiguracija je dobro dokumentirana, a uključene su i odgovarajuće stranice priručnika:
man xrdp.ini
man xrdpSve što preostaje je urediti /etc/xrdp/startwm.sh skriptu, koja se izvršava kada se korisnička sesija inicijalizira. Prvo, napravimo sigurnosnu kopiju skripte iz distribucije:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shZa pokretanje XFCE desktop okruženja trebat će vam skripta otprilike ova:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Imajte na umu: u skriptama je bolje napisati puni put do izvršnih datoteka - ovo je dobra navika. Učinimo skriptu izvršnom i u ovom trenutku postavljanje Xrdp poslužitelja može se smatrati dovršenim:
sudo chmod 755 /etc/xrdp/startwm.shPonovno pokrenite poslužitelj:
sudo systemctl restart xrdp
Postavljanje vatrozida
Prema zadanim postavkama, Xrdp sluša TCP port 3389 na svim sučeljima. Ovisno o konfiguraciji virtualnog poslužitelja, možda ćete morati konfigurirati vatrozid Netfilter. Na Linuxu se to obično radi pomoću uslužnog programa iptables, ali na Ubuntuu je bolje koristiti ufw. Ako je IP adresa klijenta poznata, konfiguracija se provodi sljedećom naredbom:
sudo ufw allow from IP_Address to any port 3389Možete dopustiti veze s bilo koje IP adrese ovako:
sudo ufw allow 3389RDP protokol podržava enkripciju, ali izlaganje Xrdp poslužitelja javnim mrežama je loša ideja. Ako klijent nema fiksni IP, poslužitelj bi trebao slušati samo localhost radi povećanja sigurnosti. Najbolje mu je pristupiti preko SSH tunela, koji će sigurno preusmjeriti promet s klijentskog računala. Imamo sličan pristup za VNC poslužitelj.
Povezivanje s RDP poslužiteljem
Za rad s okruženjem radne površine bolje je stvoriti zasebnog neprivilegiranog korisnika:
sudo adduser rdpuser 
Dodajmo korisnika u grupu sudo kako bi mogao obavljati poslove vezane uz administraciju. Ako nema takve potrebe, možete preskočiti ovaj korak:
sudo gpasswd -a rdpuser sudoMožete se povezati s poslužiteljem koristeći bilo koji RDP klijent, uključujući ugrađeni Windows Remote Desktop Services klijent. Ako Xrdp sluša vanjsko sučelje, neće biti potrebne dodatne radnje. Dovoljno je u postavkama veze navesti VPS IP adresu, korisničko ime i lozinku. Nakon povezivanja vidjet ćemo nešto poput ovoga:

Nakon početnog postavljanja okruženja radne površine, dobit ćemo potpunu radnu površinu. Kao što vidite, ne troši mnogo resursa, iako će sve ovisiti o korištenim aplikacijama.

Ako Xrdp poslužitelj sluša samo localhost, promet na klijentskom računalu morat će se upakirati u SSH tunel (sshd mora biti pokrenut na VPS-u). Na Windowsima možete koristiti grafički SSH klijent (na primjer, PuTTY), a na UNIX sustavima potreban vam je uslužni program ssh:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipNakon što se tunel inicijalizira, RDP klijent se više neće spajati na udaljeni poslužitelj, već na lokalni host.
Teže je s mobilnim uređajima: morat ćete kupiti SSH klijente koji mogu podići tunel, au iOS-u i iPadOS-u otežan je pozadinski rad aplikacija trećih strana zbog predobre optimizacije potrošnje energije. Na iPhoneu i iPadu nećete moći stvoriti tunel u zasebnoj aplikaciji; trebat će vam harvester aplikacija koja sama može uspostaviti RDP vezu putem SSH-a. Kao što je npr .
Upravitelj sesija i korisničke sesije
Mogućnost višekorisničkog rada implementirana je izravno u Xrdp poslužitelj i ne zahtijeva dodatnu konfiguraciju. Nakon pokretanja usluge putem systemd-a, jedan proces radi u demonskom načinu rada, sluša port 3389 i komunicira preko localhost s upraviteljem sesije.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
Upravitelj sesije obično nije vidljiv korisnicima, jer se prijava i lozinka navedeni u postavkama klijenta automatski prenose na njega. Ako se to ne dogodi ili dođe do pogreške tijekom provjere autentičnosti, umjesto radne površine pojavit će se interaktivni prozor za prijavu.

Automatsko pokretanje upravitelja sesije navedeno je u datoteci /etc/default/xrdp, a konfiguracija je pohranjena u /etc/xrdp/sesman.ini. Prema zadanim postavkama izgleda otprilike ovako:
[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
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false
[Sessions]Ovdje ne morate ništa mijenjati, samo morate onemogućiti prijavu s root pravima (AllowRootLogin=false). Za svakog autoriziranog korisnika u sustavu pokreće se zaseban xrdp proces: ako prekinete vezu bez završetka sesije, korisnički procesi nastavit će se izvoditi prema zadanim postavkama i možete se ponovno spojiti na sesiju. Postavke se mogu promijeniti u datoteci /etc/xrdp/sesman.ini (odjeljak [Sesije]).
Promjena rasporeda tipkovnice
Obično nema problema s dvosmjernim međuspremnikom, ali s ruskim rasporedom tipkovnice morat ćete se malo poigrati (ruski lokalitet već bi trebao biti ). Uredimo postavke tipkovnice Xrdp poslužitelja:
sudo nano /etc/xrdp/xrdp_keyboard.iniMorate dodati sljedeće retke na kraj konfiguracijske datoteke:
[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,ruSve što preostaje je spremiti datoteku i ponovno pokrenuti Xrdp:
sudo systemctl restart xrdpKao što vidite, nije teško postaviti RDP poslužitelj na Linux VPS, ali Već smo razgovarali o postavljanju VNC-a. Osim ovih tehnologija, postoji još jedna zanimljiva opcija: sustav X3Go koji koristi modificirani NX 2 protokol. Njime ćemo se baviti u sljedećoj publikaciji.
Izvor: www.habr.com
