VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
В prejšnji članek razpravljali smo o izvajanju strežnika VNC na virtualnem stroju katere koli vrste. Ta možnost ima veliko pomanjkljivosti, od katerih je glavna visoka zahteva za prepustnost kanalov za prenos podatkov. Danes se bomo poskušali povezati z grafičnim namizjem v Linuxu preko RDP (Remote Desktop Protocol). Sistem VNC temelji na prenosu nizov slikovnih pik z uporabo protokola RFB (Remote Framebuffer), RDP pa omogoča pošiljanje kompleksnejših grafičnih primitivov in ukazov na visoki ravni. Običajno se uporablja za gostovanje storitev oddaljenega namizja v sistemu Windows, vendar so na voljo tudi strežniki za Linux.

Kazalo:

Namestitev grafičnega okolja
Rusifikacija strežnika in namestitev programske opreme
Namestitev in konfiguracija strežnika RDP
Nastavitev požarnega zidu
Povezovanje s strežnikom RDP
Upravitelj sej in uporabniške seje
Preklapljanje postavitev tipkovnice

Namestitev grafičnega okolja

Vzeli bomo virtualni stroj z Ubuntu Server 18.04 LTS z dvema računalniškima jedroma, štirimi gigabajti RAM-a in dvajset gigabajtnim trdim diskom (HDD). Šibkejša konfiguracija ni primerna za grafično namizje, čeprav je to odvisno od nalog, ki jih rešujemo. Ne pozabite uporabiti promocijske kode Habrahabr10 in pridobiti 10% popusta na vaše naročilo.

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Namestitev namiznega okolja z vsemi odvisnostmi se izvede z naslednjim ukazom:

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

Kot v prejšnjem primeru smo izbrali XFCE zaradi razmeroma nizkih zahtev po računalniških virih.

Rusifikacija strežnika in namestitev programske opreme

Pogosto so virtualni stroji nameščeni samo z angleško lokalizacijo. Na namizju boste morda potrebovali ruščino, ki jo je enostavno nastaviti. Najprej namestimo prevode za sistemske programe:

sudo apt-get install language-pack-ru

Nastavimo lokalizacijo:

sudo update-locale LANG=ru_RU.UTF-8

Enak učinek je mogoče doseči z ročnim urejanjem /etc/default/locale.

Za lokalizacijo GNOME in KDE ima repozitorij paketa language-pack-gnome-ru in language-pack-kde-ru - potrebovali ju boste, če uporabljate programe iz teh namiznih okolij. V XFCE so prevodi nameščeni skupaj z aplikacijami. Nato lahko namestite slovarje:

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

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

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

Poleg tega bo morda potrebna namestitev prevodov za nekatere 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-ru

S tem je priprava namiznega okolja končana, ostane le še konfiguracija strežnika RDP.

Namestitev in konfiguracija strežnika RDP

Repozitoriji Ubuntu imajo prosto distribuiran strežnik Xrdp, ki ga bomo uporabili:

sudo apt-get install xrdp

Če je šlo vse v redu, bi se moral strežnik samodejno zagnati:

sudo systemctl status xrdp

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Strežnik Xrdp deluje z uporabniškimi pravicami xrdp in privzeto sprejme potrdilo /etc/ssl/private/ssl-cert-snakeoil.key, ki ga je mogoče zamenjati s svojim. Če želite imeti dostop do branja datoteke, morate dodati uporabnika v skupino ssl-cert:

sudo adduser xrdp ssl-cert

Privzete nastavitve najdete v datoteki /etc/default/xrdp, vse druge konfiguracijske datoteke strežnika pa se nahajajo v imeniku /etc/xrdp. Glavni parametri so v datoteki xrdp.ini, ki je ni treba spreminjati. Konfiguracija je dobro dokumentirana in vključene so ustrezne strani priročnika:

man xrdp.ini
man xrdp

Vse, kar ostane, je urejanje skripta /etc/xrdp/startwm.sh, ki se izvede ob inicializaciji uporabniške seje. Najprej naredimo varnostno kopijo skripta iz distribucije:

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

Za zagon namiznega okolja XFCE boste potrebovali skript, podoben temu:

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

Prosimo, upoštevajte: v skriptih je bolje napisati celotno pot do izvršljivih datotek - to je dobra navada. Naredimo skript izvedljiv in na tej točki lahko nastavitev strežnika Xrdp štejemo za dokončano:

sudo chmod 755 /etc/xrdp/startwm.sh

Ponovno zaženite strežnik:

sudo systemctl restart xrdp

Nastavitev požarnega zidu

Xrdp privzeto posluša vrata TCP 3389 na vseh vmesnikih. Odvisno od konfiguracije virtualnega strežnika boste morda morali konfigurirati požarni zid Netfilter. V Linuxu se to običajno naredi s pripomočkom iptables, v Ubuntuju pa je bolje uporabiti ufw. Če je odjemalčev naslov IP znan, se konfiguracija izvede z naslednjim ukazom:

sudo ufw allow from IP_Address to any port 3389

Povezave s katerega koli IP-ja lahko dovolite takole:

sudo ufw allow 3389

Protokol RDP podpira šifriranje, vendar je izpostavljanje strežnika Xrdp javnim omrežjem slaba ideja. Če odjemalec nima fiksnega IP-ja, naj strežnik posluša samo lokalnega gostitelja, da poveča varnost. Do njega je najbolje dostopati prek tunela SSH, ki bo varno preusmeril promet iz odjemalskega računalnika. Imamo podoben pristop uporabljeno v prejšnjem članku za strežnik VNC.

Povezovanje s strežnikom RDP

Za delo z namiznim okoljem je bolje ustvariti ločenega neprivilegiranega uporabnika:

sudo adduser rdpuser

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Dodajmo uporabnika v skupino sudo, da bo lahko opravljal skrbniška opravila. Če te potrebe ni, lahko ta korak preskočite:

sudo gpasswd -a rdpuser sudo

Na strežnik se lahko povežete s katerim koli odjemalcem RDP, vključno z vgrajenim odjemalcem storitev Windows Remote Desktop Services. Če Xrdp posluša zunanji vmesnik, ne bodo potrebna nobena dodatna dejanja. Dovolj je, da v nastavitvah povezave določite IP naslov VPS, uporabniško ime in geslo. Po vzpostavitvi povezave bomo videli nekaj takega:

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Po začetni nastavitvi namiznega okolja bomo dobili polnopravno namizje. Kot lahko vidite, ne porabi veliko virov, čeprav bo vse odvisno od uporabljenih aplikacij.

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Če strežnik Xrdp posluša le localhost, bo moral biti promet na odjemalskem računalniku zapakiran v tunel SSH (sshd mora delovati na VPS). V sistemu Windows lahko uporabite grafični odjemalec SSH (na primer PuTTY), v sistemih UNIX pa potrebujete pripomoček ssh:

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

Po inicializaciji tunela se odjemalec RDP ne bo več povezal z oddaljenim strežnikom, ampak z lokalnim gostiteljem.

Pri mobilnih napravah je težje: treba bo dokupiti odjemalce SSH, ki lahko dvignejo tunel, v iOS in iPadOS pa je oteženo delovanje aplikacij tretjih oseb v ozadju zaradi predobre optimizacije porabe energije. V iPhonu in iPadu ne boste mogli ustvariti tunela v ločeni aplikaciji; potrebovali boste aplikacijo harvester, ki lahko sama vzpostavi povezavo RDP prek SSH. Kot je npr Remoter Pro.

Upravitelj sej in uporabniške seje

Možnost večuporabniškega dela je implementirana neposredno v strežnik Xrdp in ne zahteva dodatne konfiguracije. Po zagonu storitve prek systemd se en proces izvaja v demonskem načinu, posluša na vratih 3389 in prek lokalnega gostitelja komunicira z upraviteljem seje.

ps aux |grep xrdp

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Upravitelj sej običajno ni viden uporabnikom, ker se prijava in geslo, določena v nastavitvah odjemalca, vanj samodejno preneseta. Če se to ne zgodi ali med preverjanjem pristnosti pride do napake, se namesto namizja prikaže interaktivno okno za prijavo.

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04
Samodejni zagon upravljalnika sej je določen v datoteki /etc/default/xrdp, konfiguracija pa je shranjena v /etc/xrdp/sesman.ini. Privzeto je videti nekako takole:

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

Tukaj vam ni treba ničesar spreminjati, le onemogočiti morate prijavo s korenskimi pravicami (AllowRootLogin=false). Za vsakega uporabnika, pooblaščenega v sistemu, se zažene ločen proces xrdp: če prekinete povezavo, ne da bi končali sejo, se bodo uporabniški procesi privzeto izvajali naprej in se lahko znova povežete s sejo. Nastavitve lahko spremenite v datoteki /etc/xrdp/sesman.ini (razdelek [Seje]).

Preklapljanje postavitev tipkovnice

Z dvosmernim odložiščem običajno ni težav, z rusko razporeditvijo tipkovnice pa se boste morali malo poigrati (ruski jezik bi moral biti že nameščen). Uredimo nastavitve tipkovnice strežnika Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Na konec konfiguracijske datoteke morate dodati naslednje vrstice:

[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

Vse kar ostane je, da shranite datoteko in znova zaženete Xrdp:

sudo systemctl restart xrdp

Kot lahko vidite, ni težko nastaviti strežnika RDP na Linux VPS, vendar prejšnji članek O nastavitvi VNC smo že razpravljali. Poleg teh tehnologij obstaja še ena zanimiva možnost: sistem X3Go z uporabo spremenjenega protokola NX 2. Obravnavali ga bomo v naslednji objavi.

VPS na Linuxu z grafičnim vmesnikom: zagon strežnika RDP na Ubuntu 18.04

Vir: www.habr.com

Dodaj komentar