VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
В forrige artikel Vi har dækket at køre en VNC-server på enhver type virtuel maskine. Denne mulighed har mange ulemper, den vigtigste er de høje krav til båndbredden af ​​datatransmissionskanaler. I dag vil vi forsøge at oprette forbindelse til et grafisk skrivebord på Linux via RDP (Remote Desktop Protocol). VNC-systemet er baseret på transmission af pixel-arrays via RFB (Remote Framebuffer)-protokollen, mens RDP tillader afsendelse af mere komplekse grafiske primitiver og kommandoer på højt niveau. Det bruges typisk til at hoste Remote Desktop Services på Windows, men servere til Linux er også tilgængelige.

Indholdsfortegnelse:

Installation af det grafiske miljø
Russificering af serveren og softwareinstallation
Installation og konfiguration af RDP-server
Opsætning af en firewall
Opretter forbindelse til RDP-server
Session Manager og brugersessioner
Skift tastaturlayout

Installation af det grafiske miljø

Vi tager en virtuel maskine med Ubuntu Server 18.04 LTS med to computerkerner, fire gigabyte RAM og en tyve gigabyte harddisk (HDD). En svagere konfiguration er ikke velegnet til et grafisk skrivebord, selvom dette afhænger af opgaverne, der løses. Glem ikke at bruge kampagnekoden Habrahabr10 for at få 10% rabat på din ordre.

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Installation af skrivebordsmiljøet med alle afhængigheder udføres med følgende kommando:

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

Som i det foregående tilfælde valgte vi XFCE på grund af dets relativt lave computerkrav.

Russificering af serveren og softwareinstallation

Ofte installeres virtuelle maskiner kun med engelsk lokalisering. På skrivebordet skal du muligvis bruge russisk, som er let at sætte op. Lad os først installere oversættelser til systemprogrammer:

sudo apt-get install language-pack-ru

Lad os konfigurere lokalisering:

sudo update-locale LANG=ru_RU.UTF-8

Den samme effekt kan opnås ved manuelt at redigere /etc/default/locale.

Til lokalisering af GNOME og KDE har depotet pakkerne language-pack-gnome-ru og language-pack-kde-ru - du skal bruge dem, hvis du bruger programmer fra disse skrivebordsmiljøer. I XFCE er oversættelser installeret med applikationer. Dernæst kan du installere ordbøgerne:

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

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

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

Derudover kan installation af oversættelser være påkrævet for nogle applikationsprogrammer:

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

Dette fuldender forberedelsen af ​​skrivebordsmiljøet, det eneste, der er tilbage, er at konfigurere RDP-serveren.

Installation og konfiguration af RDP-server

Der er en frit distribueret Xrdp-server i Ubuntu-lagrene, som vi vil bruge:

sudo apt-get install xrdp

Hvis alt gik godt, skulle serveren starte automatisk:

sudo systemctl status xrdp

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Xrdp-serveren kører med xrdp-brugerrettigheder og tager som standard certifikatet /etc/ssl/private/ssl-cert-snakeoil.key, som kan erstattes med dit eget. For at få adgang til filen for at læse, skal du tilføje brugeren til ssl-cert-gruppen:

sudo adduser xrdp ssl-cert

Standardindstillingerne kan findes i filen /etc/default/xrdp, og alle andre serverkonfigurationsfiler er placeret i mappen /etc/xrdp. Hovedparametrene er i filen xrdp.ini, som ikke skal ændres. Konfigurationen er veldokumenteret, og pakken inkluderer også de tilsvarende manpages:

man xrdp.ini
man xrdp

Det eneste, der er tilbage, er at redigere scriptet /etc/xrdp/startwm.sh, som udføres, når brugersessionen initialiseres. Lad os først lave en sikkerhedskopi af scriptet fra distributionen:

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

For at starte XFCE-skrivebordsmiljøet skal du bruge et script, der ser sådan ud:

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

Bemærk venligst: det er bedre at skrive den fulde sti til eksekverbare filer i scripts - dette er en god vane. Lad os gøre scriptet eksekverbart, og dette fuldender Xrdp-serveropsætningen:

sudo chmod 755 /etc/xrdp/startwm.sh

Genstart serveren:

sudo systemctl restart xrdp

Opsætning af en firewall

Som standard lytter Xrdp på TCP-port 3389 på alle grænseflader. Afhængigt af din virtuelle serverkonfiguration skal du muligvis konfigurere Netfilter-firewallen. I Linux gøres dette normalt ved hjælp af iptables-værktøjet, men i Ubuntu er det bedre at bruge ufw. Hvis klientens IP-adresse er kendt, udføres konfigurationen med følgende kommando:

sudo ufw allow from IP_Address to any port 3389

Du kan tillade forbindelser fra enhver IP som denne:

sudo ufw allow 3389

RDP-protokollen understøtter kryptering, men at åbne adgang til Xrdp-serveren fra offentlige netværk er en dårlig idé. Hvis klienten ikke har en fast IP, bør serveren kun lytte på localhost for at forbedre sikkerheden. Det er bedre at konfigurere adgang til det gennem en SSH-tunnel, som sikkert vil omdirigere trafik fra klientcomputeren. Vi har en lignende tilgang brugt i forrige artikel til VNC server.

Opretter forbindelse til RDP-server

For at arbejde med skrivebordsmiljøet er det bedre at oprette en separat uprivilegeret bruger:

sudo adduser rdpuser

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Lad os tilføje brugeren til sudo-gruppen, så han kan udføre administrationsrelaterede opgaver. Hvis der ikke er et sådant behov, kan du springe dette trin over:

sudo gpasswd -a rdpuser sudo

Du kan oprette forbindelse til serveren ved hjælp af enhver RDP-klient, inklusive den indbyggede Windows Remote Desktop Services-klient. Hvis Xrdp lytter på den eksterne grænseflade, kræves ingen yderligere trin. Det er nok at angive VPS IP-adressen, brugernavnet og adgangskoden i forbindelsesindstillingerne. Efter tilslutning vil vi se noget som dette:

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Efter den indledende opsætning af skrivebordsmiljøet får vi et fuldgyldigt skrivebord. Som du kan se, bruger det ikke mange ressourcer, selvom alt i fremtiden vil afhænge af de anvendte applikationer.

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Hvis Xrdp-serveren kun lytter til localhost, skal trafikken pakkes ind i en SSH-tunnel på klientcomputeren (sshd skal køre på VPS). På Windows kan du bruge en grafisk SSH-klient (for eksempel PuTTY), og på UNIX-systemer skal du bruge ssh-værktøjet:

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

Efter at tunnelen er initialiseret, vil RDP-klienten ikke længere oprette forbindelse til fjernserveren, men til den lokale vært.

Det er mere kompliceret med mobile enheder: du bliver nødt til at købe SSH-klienter, der er i stand til at oprette en tunnel, og i iOS og iPadOS er baggrundsarbejde med tredjepartsapplikationer vanskeligt på grund af alt for god energiforbrugsoptimering. På iPhone og iPad vil du ikke være i stand til at oprette en tunnel i en separat applikation - du skal bruge en mejetærsker, der selv kan etablere en RDP-forbindelse via SSH. Som f.eks. Remote Pro.

Session Manager og brugersessioner

Muligheden for at arbejde med flere brugere er implementeret direkte i Xrdp-serveren og kræver ikke yderligere konfiguration. Efter at have startet tjenesten via systemd, kører en proces i dæmontilstand, lytter på port 3389 og kommunikerer via localhost med sessionsmanageren.

ps aux |grep xrdp

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Sessionsmanageren er normalt ikke synlig for brugerne, fordi login og adgangskode, der er angivet i klientindstillingerne, overføres automatisk til den. Hvis dette ikke sker, eller der opstår en godkendelsesfejl, vises et interaktivt login-vindue i stedet for skrivebordet.

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04
Automatisk start af sessionsmanageren er angivet i filen /etc/default/xrdp, og konfigurationen er gemt i /etc/xrdp/sesman.ini. Som standard ser det sådan ud:

[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]

Du behøver ikke at ændre noget her, du skal blot forbyde login med root-rettigheder (AllowRootLogin=false). For hver bruger, der er logget på systemet, startes en separat xrdp-proces: Hvis du afbryder forbindelsen uden at afslutte sessionen, vil brugerprocesserne fortsætte med at køre som standard, og du kan genoprette forbindelsen til sessionen. Indstillingerne kan ændres i filen /etc/xrdp/sesman.ini (afsnit [Sessioner]).

Skift tastaturlayout

Der er normalt ingen problemer med to-vejs udklipsholderen, men med det russiske tastaturlayout bliver du nødt til at gøre noget magi (det russiske sprog burde allerede være installeret). Lad os redigere tastaturindstillingerne på Xrdp-serveren:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Følgende linjer skal tilføjes til slutningen af ​​konfigurationsfilen:

[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

Det eneste, der er tilbage, er at gemme filen og genstarte Xrdp:

sudo systemctl restart xrdp

Som du kan se, er det ikke svært at konfigurere en RDP-server på en Linux VPS, og i forrige artikel Vi har allerede dækket VNC-opsætning. Ud over disse teknologier er der en anden interessant mulighed: X3Go-systemet, som bruger en modificeret NX 2-protokol. Vi vil behandle det i næste publikation.

VPS på Linux med en grafisk grænseflade: lancering af en RDP-server på Ubuntu 18.04

Kilde: www.habr.com