VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
I den föregående artikeln Vi har genomgått lanseringen av en VNC-server på en virtuell maskin av vilken typ som helst. Denna metod har många nackdelar, varav den främsta är höga krav på bandbredden för datatrafik. Idag kommer vi att försöka ansluta till en grafisk skrivbordsmiljö på Linux via RDP (Remote Desktop Protocol). VNC-systemet bygger på att överföra pixlar via RFB (Remote Framebuffer) protocol, medan RDP möjliggör att skicka mer komplexa grafiska primitiva och högre nivå kommandon. Det används vanligtvis för att organisera fjärrskrivbordstjänster i Windows, men servrar för Linux finns också tillgängliga.

Innehåll:

Installation av grafiskt gränssnitt
Lokalisering av servern och installation av programvara
Installation och konfiguration av RDP-server
Konfiguration av brandväggen
Anslutning till RDP-servern
Sessionshanterare och användarsessioner
Byta tangentbordslayouter

Installation av grafiskt gränssnitt

Vi kommer att ta en virtuell maskin med Ubuntu Server 18.04 LTS med två kärnor, fyra gigabyte RAM och en hårddisk (HDD) på tjugo gigabyte. En svagare konfiguration passar dåligt för grafiska skrivbord, även om detta beror på de uppgifter som ska utföras. Glöm inte att använda kampanjkoden Habrahabr10 för att få 10% rabatt vid beställning.

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Installation av skrivbordsmiljön med alla beroenden utförs med följande kommando:

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

Som i föregående fall har vi valt XFCE på grund av dess relativt låga krav på beräkningsresurser.

Lokalisering av servern och installation av programvara

Ofta distribueras virtuella maskiner endast med engelsk lokalisering. Skrivbordet kan behöva rysk, vilket är enkelt att konfigurera. Först installerar vi översättningarna för systemprogrammen:

sudo apt-get install language-pack-ru

Låt oss ställa in lokaliseringen:

sudo update-locale LANG=ru_RU.UTF-8

Samme effekt kan uppnås genom att redigera filen /etc/default/locale manuellt.

För lokalisering av GNOME och KDE finns det paket i arkivet language-pack-gnome-ru och language-pack-kde-ru — de kommer att behövas om du ska använda program från dessa skrivbordsmiljöer. I XFCE installeras översättningar tillsammans med applikationerna. Därefter kan du installera ordböcker:

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

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

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

Dessutom kan installation av översättningar krävas för vissa applikationer:

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

Förberedelserna för skrivbordsmiljön är nu klara, det återstår att konfigurera RDP-servern.

Installation och konfiguration av RDP-server

I Ubuntu-repositories har vi en fritt distribuerad server Xrdp, som vi kommer att utnyttja:

sudo apt-get install xrdp

Om allt går bra ska servern starta automatiskt:

sudo systemctl status xrdp

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Xrdp-servern startar med användaren xrdp:s rättigheter och hämtar som standard ett certifikat från /etc/ssl/private/ssl-cert-snakeoil.key, vilket kan bytas ut mot ett eget. För att ge läsåtkomst till filen behöver vi lägga till användaren i ssl-cert gruppen:

sudo adduser xrdp ssl-cert

Standardinställningar finns i filen /etc/default/xrdp, medan alla andra konfigurationsfiler för servern ligger i katalogen /etc/xrdp. De viktigaste parametrarna finns i xrdp.ini-filen, som kan lämnas oförändrad. Konfigurationen är väl dokumenterad och det finns dessutom relevanta man-sidor:

man xrdp.ini
man xrdp

Det återstår bara att redigera skriptet /etc/xrdp/startwm.sh, som utförs vid initialiseringen av användarsessionen. Först gör vi en säkerhetskopiering av skriptet från distributionen:

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

För att starta XFCE-skrivbordsmiljön behöver vi ett skript med ungefär följande innehåll:

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

Observera: I skripten är det bättre att ange den fullständiga sökvägen till exekverbara filer — det är en bra vana. Gör skriptet exekverbart och vi kan betrakta konfigurationen av Xrdp-servern som färdig:

sudo chmod 755 /etc/xrdp/startwm.sh

Starta om servern:

sudo systemctl restart xrdp

Konfiguration av brandväggen

Som standard lyssnar Xrdp på TCP-port 3389 på alla gränssnitt. Beroende på konfigurationen av den virtuella servern kan det vara nödvändigt att konfigurera brandväggen Netfilter. I Linux görs detta vanligtvis med hjälp av verktyget iptables, men i Ubuntu är det bättre att använda ufw. Om klientens IP-adress är känd, görs konfigurationen med följande kommando:

sudo ufw allow from IP_Address to any port 3389

För att tillåta anslutningar från vilken IP som helst kan man göra så här:

sudo ufw allow 3389

RDP-protokollet stöder kryptering, men att öppna åtkomst till Xrdp-servern från offentliga nätverk är en dålig idé. Om klienten inte har en fast IP-adress, bör servern för ökad säkerhet bara lyssna på localhost. Åtkomsten är bättre att ställa in via en SSH-tunnel, vilket säkert omdirigerar trafiken från klientens dator. En liknande metod använde vi i den föregående artikeln för VNC-servern.

Anslutning till RDP-servern

För att arbeta med skrivbordsmiljön är det bättre att skapa en separat icke-privilegierad användare:

sudo adduser rdpuser

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Vi lägger till användaren i sudo-gruppen så att han kan hantera administrativa uppgifter. Om det inte finns något behov av detta kan detta steg hoppas över:

sudo gpasswd -a rdpuser sudo

Du kan ansluta till servern med valfri RDP-klient, inklusive den inbyggda klienten för Windows fjärrskrivbordsservice. Om Xrdp lyssnar på det externa gränssnittet behövs inga ytterligare åtgärder. Det räcker med att ange VPS IP-adress, användarnamn och lösenord i anslutningsinställningarna. Efter anslutning kommer vi att se en skärm som ungefär ser ut så här:

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Efter den första konfigurationen av skrivbordsmiljön kommer vi att få en fullständig skrivbordsupplevelse. Som du ser, använder den inte så mycket resurser, även om det kommer att bero på de använda applikationerna.

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Om servern Xrdp endast lyssnar på localhost måste trafiken på klientdatorn paketeras i en SSH-tunnel (sshd måste vara aktiverat på VPS:en). På Windows kan man använda en grafisk SSH-klient (till exempel PuTTY), medan UNIX-system kräver verktyget ssh:

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

Efter att tunneln har initierats kommer RDP-klienten att ansluta till den lokala värden istället för den fjärranslutna servern.

Med mobila enheter är det mer komplicerat: klienter som kan upprätta en tunnel via SSH måste köpas, dessutom är bakgrundsarbete för tredjepartsprogram svårt på iOS och iPadOS på grund av alltför bra energihantering. På iPhone och iPad går det inte att upprätta en tunnel i en separat app — en kombinationsapp krävs, som själv kan upprätta en RDP-anslutning via SSH. Till exempel: Remoter Pro.

Sessionshanterare och användarsessioner

Möjligheten till fleranvändararbete är inbyggd i Xrdp-servern och kräver ingen ytterligare inställning. Efter att tjänsten har startats via systemd arbetar en process i demonläge, lyssnar på port 3389 och interagerar med sessionshanteraren via localhost.

ps aux |grep xrdp

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Sessionshanteraren är vanligtvis osynlig för användarna, eftersom inloggningsnamnet och lösenordet som angetts i klientinställningarna skickas automatiskt till den. Om detta inte har skett eller om ett autentiseringsfel uppstod, visas istället ett interaktivt fönster för inloggning istället för skrivbordet.

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04
Den automatiska starten av sessionshanteraren finns angiven i filen /etc/default/xrdp, och konfigurationen lagras i /etc/xrdp/sesman.ini. Som standard ser den ut ungefär så här:

[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
; När AlwaysGroupCheck=false tillåts åtkomst
; om gruppen TerminalServerUsers inte är definierad.
AlwaysGroupCheck=false

[Sessions]

Här kan ingenting ändras, bara inloggning med root-rättigheter (AllowRootLogin=false) bör förbjudas. För varje användare som loggar in i systemet startas en separat xrdp-process: om man kopplar bort utan att avsluta sessionen fortsätter användarprocesserna som standard att köra, och man kan koppla upp sig igen till sessionen. Inställningar kan ändras i filen /etc/xrdp/sesman.ini (sektionen [Sessions]).

Byta tangentbordslayouter

Med tvåvägs urklipp uppstår vanligtvis inga problem, men med den ryska tangentbordslayouten måste vi jobba lite (den ryska lokalversionen måste redan vara installerad). Låt oss redigera tangentbordsinställningarna för Xrdp-servern:

sudo nano /etc/xrdp/xrdp_keyboard.ini

I slutet av konfigurationsfilen behöver vi lägga till följande rader:

[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 återstår att spara filen och starta om Xrdp:

sudo systemctl restart xrdp

Som ni ser är det inte svårt att starta en RDP-server på en Linux VPS, och i den föregående artikeln har vi redan gått igenom konfigurationen av VNC. Förutom dessa teknologier finns det en intressant alternativ: ett system X2Go som använder ett modifierat protokoll NX 3. Den kommer vi att utforska i nästa publikation.

VPS på Linux med grafiskt gränssnitt: vi kör RDP-server på Ubuntu 18.04

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster