VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
В predchádzajúci článok diskutovali sme o spustení servera VNC na virtuálnom stroji akéhokoľvek typu. Táto možnosť má veľa nevýhod, z ktorých hlavnou sú vysoké požiadavky na priepustnosť kanálov prenosu dát. Dnes sa pokúsime pripojiť ku grafickému desktopu na Linuxe cez RDP (Remote Desktop Protocol). Systém VNC je založený na prenose polí pixelov pomocou protokolu RFB (Remote Framebuffer) a RDP umožňuje posielať zložitejšie grafické primitívy a príkazy na vysokej úrovni. Zvyčajne sa používa na hosťovanie služieb vzdialenej pracovnej plochy v systéme Windows, ale dostupné sú aj servery pre Linux.

Obsah:

Inštalácia grafického prostredia
Rusifikácia servera a inštalácia softvéru
Inštalácia a konfigurácia servera RDP
Nastavenie brány firewall
Pripojenie k serveru RDP
Správca relácií a relácie používateľov
Prepínanie rozložení klávesnice

Inštalácia grafického prostredia

Vezmeme si virtuálny stroj s Ubuntu Server 18.04 LTS s dvoma výpočtovými jadrami, štyrmi gigabajtmi RAM a dvadsaťgigabajtovým pevným diskom (HDD). Slabšia konfigurácia nie je vhodná pre grafický desktop, aj keď to závisí od riešených úloh. Nezabudnite použiť promo kód Habrahabr10 na získanie 10% zľavy na vašu objednávku.

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Inštalácia desktopového prostredia so všetkými závislosťami sa vykonáva pomocou nasledujúceho príkazu:

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

Rovnako ako v predchádzajúcom prípade sme si vybrali XFCE kvôli relatívne nízkym nárokom na výpočtové zdroje.

Rusifikácia servera a inštalácia softvéru

Virtuálne stroje sú často nasadené iba s anglickou lokalizáciou. Na pracovnej ploche možno budete potrebovať ruštinu, ktorá sa dá ľahko nastaviť. Najprv nainštalujte preklady pre systémové programy:

sudo apt-get install language-pack-ru

Nastavíme lokalizáciu:

sudo update-locale LANG=ru_RU.UTF-8

Rovnaký efekt možno dosiahnuť manuálnou úpravou súboru /etc/default/locale.

Pre lokalizáciu GNOME a KDE má úložisko balíky language-pack-gnome-ru a language-pack-kde-ru – budete ich potrebovať, ak používate programy z týchto desktopových prostredí. V XFCE sa preklady inštalujú s aplikáciami. Ďalej môžete nainštalovať slovníky:

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

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

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

Okrem toho môže byť pre niektoré aplikačné programy potrebná inštalácia prekladov:

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

Tým je príprava desktopového prostredia hotová, ostáva už len nakonfigurovať RDP server.

Inštalácia a konfigurácia servera RDP

Repozitáre Ubuntu majú voľne distribuovaný server Xrdp, ktorý budeme používať:

sudo apt-get install xrdp

Ak všetko prebehlo v poriadku, server by sa mal spustiť automaticky:

sudo systemctl status xrdp

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Server Xrdp beží s používateľskými právami xrdp a štandardne preberá certifikát /etc/ssl/private/ssl-cert-snakeoil.key, ktorý je možné nahradiť vlastným. Ak chcete mať prístup na čítanie súboru, musíte pridať používateľa do skupiny ssl-cert:

sudo adduser xrdp ssl-cert

Predvolené nastavenia možno nájsť v súbore /etc/default/xrdp a všetky ostatné konfiguračné súbory servera sa nachádzajú v adresári /etc/xrdp. Hlavné parametre sú v súbore xrdp.ini, ktorý nie je potrebné meniť. Konfigurácia je dobre zdokumentovaná a sú zahrnuté príslušné manuálové stránky:

man xrdp.ini
man xrdp

Zostáva len upraviť skript /etc/xrdp/startwm.sh, ktorý sa spustí pri inicializácii relácie používateľa. Najprv urobme záložnú kópiu skriptu z distribúcie:

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

Ak chcete spustiť desktopové prostredie XFCE, budete potrebovať skript, napríklad:

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

Poznámka: v skriptoch je lepšie napísať úplnú cestu k spustiteľným súborom - to je dobrý zvyk. Urobme skript spustiteľným a v tomto bode možno považovať nastavenie servera Xrdp za dokončené:

sudo chmod 755 /etc/xrdp/startwm.sh

Reštartujte server:

sudo systemctl restart xrdp

Nastavenie brány firewall

Štandardne Xrdp počúva TCP port 3389 na všetkých rozhraniach. V závislosti od konfigurácie virtuálneho servera možno budete musieť nakonfigurovať bránu firewall Netfilter. Na Linuxe sa to zvyčajne robí pomocou nástroja iptables, ale na Ubuntu je lepšie použiť ufw. Ak je známa IP adresa klienta, konfigurácia sa vykoná pomocou nasledujúceho príkazu:

sudo ufw allow from IP_Address to any port 3389

Môžete povoliť pripojenia z akejkoľvek adresy IP, ako je táto:

sudo ufw allow 3389

Protokol RDP podporuje šifrovanie, ale vystavenie servera Xrdp verejným sieťam je zlý nápad. Ak klient nemá pevnú IP, server by mal na zvýšenie bezpečnosti počúvať iba localhost. Najlepšie je k nemu pristupovať cez SSH tunel, ktorý bezpečne presmeruje prevádzku z klientskeho počítača. Máme podobný prístup použité v predchádzajúcom článku pre VNC server.

Pripojenie k serveru RDP

Ak chcete pracovať s prostredím pracovnej plochy, je lepšie vytvoriť samostatného neprivilegovaného používateľa:

sudo adduser rdpuser

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Pridajme používateľa do skupiny sudo, aby mohol vykonávať úlohy súvisiace s administráciou. Ak to nie je potrebné, môžete tento krok preskočiť:

sudo gpasswd -a rdpuser sudo

K serveru sa môžete pripojiť pomocou ľubovoľného klienta RDP vrátane vstavaného klienta Windows Remote Desktop Services. Ak Xrdp počúva externé rozhranie, nebudú potrebné žiadne ďalšie akcie. V nastaveniach pripojenia stačí zadať VPS IP adresu, užívateľské meno a heslo. Po pripojení uvidíme niečo takéto:

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Po prvotnom nastavení desktopového prostredia získame plnohodnotnú pracovnú plochu. Ako vidíte, nespotrebováva veľa zdrojov, aj keď všetko bude závisieť od použitých aplikácií.

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Ak server Xrdp počúva iba localhost, prenos na klientskom počítači bude musieť byť zabalený do tunela SSH (sshd musí bežať na VPS). V systéme Windows môžete použiť grafického klienta SSH (napríklad PuTTY) a v systémoch UNIX potrebujete nástroj ssh:

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

Po inicializácii tunela sa klient RDP už nepripojí k vzdialenému serveru, ale k lokálnemu hostiteľovi.

S mobilnými zariadeniami je to zložitejšie: SSH klienti schopní vybudovať tunel budú musieť byť zakúpení a v iOS a iPadOS je obtiažna prevádzka aplikácií tretích strán na pozadí kvôli príliš dobrej optimalizácii spotreby energie. Na zariadeniach iPhone a iPad nebudete môcť vytvoriť tunel v samostatnej aplikácii; budete potrebovať aplikáciu harvester, ktorá dokáže sama vytvoriť pripojenie RDP cez SSH. Ako je napr Remoter Pro.

Správca relácií a relácie používateľov

Schopnosť pracovať pre viacerých používateľov je implementovaná priamo na serveri Xrdp a nevyžaduje ďalšiu konfiguráciu. Po spustení služby cez systemd jeden proces beží v režime démona, počúva na porte 3389 a komunikuje cez localhost so správcom relácie.

ps aux |grep xrdp

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Správca relácií zvyčajne nie je pre používateľov viditeľný, pretože prihlasovacie meno a heslo zadané v nastaveniach klienta sa do neho prenášajú automaticky. Ak sa tak nestane alebo pri autentifikácii dôjde k chybe, namiesto pracovnej plochy sa zobrazí interaktívne prihlasovacie okno.

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04
Automatické spustenie správcu relácie je špecifikované v súbore /etc/default/xrdp a konfigurácia je uložená v /etc/xrdp/sesman.ini. V predvolenom nastavení to vyzerá asi takto:

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

Tu nemusíte nič meniť, stačí zakázať prihlásenie s právami root (AllowRootLogin=false). Pre každého používateľa autorizovaného v systéme sa spustí samostatný proces xrdp: ak sa odpojíte bez ukončenia relácie, používateľské procesy budú štandardne naďalej bežať a môžete sa znova pripojiť k relácii. Nastavenia je možné zmeniť v súbore /etc/xrdp/sesman.ini (sekcia [Sessions]).

Prepínanie rozložení klávesnice

S obojsmernou schránkou zvyčajne nie sú žiadne problémy, ale s ruským rozložením klávesnice sa budete musieť trochu pohrať (ruské miestne nastavenie by už malo byť nainštalovaný). Upravme nastavenia klávesnice servera Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Na koniec konfiguračného súboru musíte pridať nasledujúce riadky:

[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

Zostáva len uložiť súbor a reštartovať Xrdp:

sudo systemctl restart xrdp

Ako vidíte, nie je ťažké nastaviť server RDP na Linux VPS, ale predchádzajúci článok O nastavení VNC sme už diskutovali. Okrem týchto technológií je tu ešte jedna zaujímavá možnosť: systém X3Go využívajúci upravený protokol NX 2. Budeme sa mu venovať v ďalšej publikácii.

VPS v systéme Linux s grafickým rozhraním: spustenie servera RDP na Ubuntu 18.04

Zdroj: hab.com

Pridať komentár