VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
În articolul anterior Am discutat despre lansarea serverului VNC pe o mașină virtuală de orice tip. Această variantă are o mulțime de dezavantaje, dintre care cel mai important este cerințele ridicate de lățime de bandă a canalelor de transmitere a datelor. Astăzi, vom încerca să ne conectăm la desktop-ul grafic pe Linux prin RDP (Remote Desktop Protocol). Sistemul VNC se bazează pe transmiterea de matrice de pixeli prin protocolul RFB (Remote Framebuffer), iar RDP permite trimiterea de primitive grafice mai complexe și comenzi la nivel înalt. De obicei, este utilizat pentru organizarea serviciilor de desktop la distanță în Windows, dar servere pentru Linux sunt de asemenea disponibile.

Cuprins:

Instalarea mediului grafic
Localizarea serverului și instalarea software-ului
Instalarea și configurarea serverului RDP
Configurarea firewall-ului
Conectarea la serverul RDP
Manager de sesiuni și sesiuni de utilizatori
Schimbarea layout-ului tastaturii

Instalarea mediului grafic

Vom lua o mașină virtuală cu Ubuntu Server 18.04 LTS cu două nuclee de procesor, patru gigabytes de memorie RAM și un hard disk (HDD) de douăzeci de gigabytes. O configurație mai slabă nu este potrivită pentru un desktop grafic, deși depinde de sarcinile rezolvate. Nu uitați să folosiți codul promoțional Habrahabr10 pentru a obține o reducere de 10% la comandă.

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Instalarea mediului de birou cu toate dependențele se efectuează cu următoarea comandă:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Așa cum am discutat anterior, am ales XFCE din cauza cerințelor relativ scăzute de resurse de calcul.

Localizarea serverului și instalarea software-ului

Adesea, mașinile virtuale sunt desfășurate doar cu localizare în limba engleză. Pe desktop ar putea fi necesară limba rusă, care nu este dificil de configurat. Mai întâi, vom instala traducerile pentru programele de sistem:

sudo apt-get install language-pack-ro

Să configurăm localizarea:

sudo update-locale LANG=ro_RO.UTF-8

Același efect poate fi obținut editând manual fișierul /etc/default/locale.

Pentru localizarea GNOME și KDE există pachete în repository: language-pack-gnome-ro și language-pack-kde-ro — acestea vor fi necesare dacă veți folosi programe din aceste medii de birou. În XFCE, traducerile se instalează împreună cu aplicațiile. Apoi, putem instala dicționare:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

În plus, instalarea traducerilor poate fi necesară pentru unele aplicații:

# Браузер 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-ru

Acum, pregătirea mediului desktop este completă, rămâne să configurăm serverul RDP.

Instalarea și configurarea serverului RDP

În repositoare Ubuntu există un server Xrdp distribuit liber, pe care îl vom folosi:

sudo apt-get install xrdp

Dacă totul a decurs bine, serverul ar trebui să se pornească automat:

sudo systemctl status xrdp

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Serverul Xrdp se pornește cu drepturile utilizatorului xrdp și, implicit, folosește certificatul /etc/ssl/private/ssl-cert-snakeoil.key, care poate fi înlocuit cu unul propriu. Pentru accesul la fișierul necesar citirii, trebuie să adăugați utilizatorul în grupul ssl-cert:

sudo adduser xrdp ssl-cert

Setările implicite pot fi găsite în fișierul /etc/default/xrdp, iar toate celelalte fișiere de configurație ale serverului se află în directorul /etc/xrdp. Parametrii principali se află în fișierul xrdp.ini, care nu trebuie modificat. Configurația este bine documentată, iar în plus există manpages corespunzătoare:

man xrdp.ini
man xrdp

Este doar nevoie să edităm scriptul /etc/xrdp/startwm.sh, care este executat la inițializarea sesiunii utilizatorului. În prealabil, să facem o copie de rezervă a scriptului din distribuție:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

Pentru a lansa mediu desktop XFCE, va fi necesar un scenariu cam de acest conținut:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

Rețineți: în scripturi este bine să specificați calea completă către executabile — acesta este un obicei bun. Să facem scriptul executabil, iar configurația serverului Xrdp poate fi considerată completă:

sudo chmod 755 /etc/xrdp/startwm.sh

Reporniți serverul:

sudo systemctl restart xrdp

Configurarea firewall-ului

În mod implicit, Xrdp ascultă pe portul TCP 3389 pe toate interfețele. În funcție de configurația serverului virtual, ar putea fi necesară configurarea firewall-ului Netfilter. În Linux, acest lucru se face de obicei cu ajutorul utilitarului iptables, dar în Ubuntu este mai bine să folosiți ufw. Dacă adresa IP a clientului este cunoscută, se face configurarea cu următoarea comandă:

sudo ufw allow from IP_Address to any port 3389

Pentru a permite conexiuni din orice IP, se poate face astfel:

sudo ufw allow 3389

Protocolul RDP suportă criptarea, dar deschiderea accesului la serverul Xrdp din rețele publice nu este o idee bună. Dacă clientul nu are o adresă IP fixă, pentru a spori securitatea, serverul ar trebui să asculte doar pe localhost. Accesul la el ar trebui să fie configurat printr-un tunel SSH, care redirecționează în siguranță traficul de pe computerul clientului. O abordare similară am folosit în articolul anterior pentru serverul VNC.

Conectarea la serverul RDP

Pentru a lucra cu mediu desktop, este mai bine să creați un utilizator neprivilegiat separat:

sudo adduser rdpuser

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Să adăugăm utilizatorul în grupul sudo, astfel încât să poată rezolva sarcinile de administrare. Dacă nu este nevoie, acest pas poate fi sărit:

sudo gpasswd -a rdpuser sudo

Vă puteți conecta la server folosind orice client RDP, inclusiv clientul încorporat al serviciului Remote Desktop Windows. Dacă Xrdp ascultă pe interfața externă, nu sunt necesare alte acțiuni suplimentare. Este suficient să specificați în setările de conexiune adresa IP a VPS-ului, numele utilizatorului și parola. După conectare, vom vedea o imagine asemănătoare:

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
După configurarea inițială a mediu desktop, vom obține un desktop complet funcțional. Așa cum vedeți, acesta consumă destul de puține resurse, deși ulterior totul va depinde de aplicațiile utilizate.

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Dacă serverul Xrdp ascultă doar pe localhost, traficul de pe computerul client va trebui să fie ambalat într-un tunel SSH (sshd trebuie să fie activat pe VPS). Pe Windows, se poate folosi un client grafic SSH (de exemplu, PuTTY), iar în sistemele UNIX este necesară utilitarul ssh:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

După inițializarea tunelului, clientul RDP se va conecta nu la serverul îndepărtat, ci la gazda locală.

Cu dispozitivele mobile este mai complicat: clienți SSH capabili să stabilească un tunel trebuie achiziționați, plus că în iOS și iPadOS, funcționarea în fundal a aplicațiilor terțe este îngreunată din cauza optimizării excelente a consumului de energie. Pe iPhone și iPad, nu se poate stabili un tunel într-o aplicație separată — este necesară o aplicație combinată, care poate stabili singură conexiunea RDP prin SSH. Un exemplu de astfel de aplicație este Remoter Pro.

Manager de sesiuni și sesiuni de utilizatori

Funcția de lucru multi-utilizator este implementată direct în serverul Xrdp și nu necesită configurări suplimentare. După ce serviciul este pornit prin systemd, un proces funcționează în modul demon, ascultând pe portul 3389 și interacționând prin localhost cu managerul de sesiuni.

ps aux |grep xrdp

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Managerul de sesiuni nu este vizibil pentru utilizatori, deoarece login-ul și parola specificate în setările clientului sunt transmise automat. Dacă acest lucru nu s-a întâmplat sau a apărut o eroare de autentificare, în locul desktop-ului va apărea o fereastră interactivă pentru conectare.

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04
Autostart-ul managerului de sesiuni este specificat în fișierul /etc/default/xrdp, iar configurația este stocată în /etc/xrdp/sesman.ini. În mod implicit, acesta arată cam așa:

[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
; Când AlwaysGroupCheck=false, accesul va fi permis
; dacă grupul TerminalServerUsers nu este definit.
AlwaysGroupCheck=false

[Sessions]

Aici nu este necesar să schimbați nimic, trebuie doar să interziceți conectarea cu drepturi root (AllowRootLogin=false). Pentru fiecare utilizator autorizat în sistem, se pornește un proces xrdp separat: dacă se deconectează fără a încheia sesiunea, procesele utilizatorilor vor continua să funcționeze în mod implicit, iar utilizatorul se va putea reconecta la sesiune. Setările pot fi modificate în fișierul /etc/xrdp/sesman.ini (secțiunea [Sessions]).

Schimbarea layout-ului tastaturii

În general, problemele cu clipboard-ul bidirecțional nu apar, dar va trebui să ajustați puțin setările pentru tastatura în limba rusă (localea rusă ar trebui să fie deja instalată). Să edităm setările tastaturii serverului Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

La finalul fișierului de configurare, trebuie să adăugăm următoarele linii:

[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,ru

Trebuie să salvăm fișierul și să repornim Xrdp:

sudo systemctl restart xrdp

După cum vedeți, ridicarea unui server RDP pe un VPS cu Linux nu este complicată, iar în articolul anterior am analizat deja setările VNC. Pe lângă aceste tehnologii, există o altă opțiune interesantă: sistemul X2Go, care folosește un protocol NX 3 modificat. Cu acesta ne vom ocupa în următoarea publicație.

VPS pe Linux cu interfață grafică: pornim serverul RDP pe Ubuntu 18.04

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster