VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
В tidigare artikel vi diskuterade att köra en VNC-server på en virtuell maskin av vilken typ som helst. Detta alternativ har många nackdelar, varav den främsta är de höga kraven på genomströmningen av dataöverföringskanaler. Idag ska vi försöka ansluta till ett grafiskt skrivbord på Linux via RDP (Remote Desktop Protocol). VNC-systemet är baserat på att överföra arrayer av pixlar med hjälp av RFB (Remote Framebuffer)-protokollet, och RDP låter dig skicka mer komplexa grafikprimitiver och kommandon på hög nivå. Det används vanligtvis för att vara värd för fjärrskrivbordstjänster på Windows, men servrar för Linux är också tillgängliga.

Innehållsförteckning:

Installation av den grafiska miljön
Russifiering av servern och mjukvaruinstallation
Installera och konfigurera en RDP-server
Konfigurera en brandvägg
Ansluter till en RDP-server
Sessionshanterare och användarsessioner
Byta tangentbordslayout

Installation av den grafiska miljön

Vi kommer att ta en virtuell maskin med Ubuntu Server 18.04 LTS med två datorkärnor, fyra gigabyte RAM och en tjugo gigabyte hårddisk (HDD). En svagare konfiguration är inte lämplig för ett grafiskt skrivbord, även om detta beror på vilka uppgifter som löses. Glöm inte att använda kampanjkoden Habrahabr10 för att få 10% rabatt på din beställning.

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Installation av skrivbordsmiljön med alla beroenden görs med följande kommando:

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

Som i föregående fall valde vi XFCE på grund av dess relativt låga krav på datorresurser.

Russifiering av servern och mjukvaruinstallation

Ofta distribueras virtuella maskiner endast med engelsk lokalisering. På skrivbordet kan du behöva ryska, vilket är lätt att ställa in. Låt oss först installera översättningar för systemprogram:

sudo apt-get install language-pack-ru

Låt oss ställa in lokalisering:

sudo update-locale LANG=ru_RU.UTF-8

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

För lokalisering av GNOME och KDE har förvaret paketen language-pack-gnome-ru och language-pack-kde-ru - du kommer att behöva dem om du använder program från dessa skrivbordsmiljöer. I XFCE installeras översättningar med applikationer. Därefter kan du installera ordböckerna:

# Словари для проверки орфографии
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 applikationsprogram:

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

Detta slutför förberedelserna av skrivbordsmiljön, allt som återstår är att konfigurera RDP-servern.

Installera och konfigurera en RDP-server

Ubuntu-förråden har en fritt distribuerad Xrdp-server, som vi kommer att använda:

sudo apt-get install xrdp

Om allt gick bra bör servern starta automatiskt:

sudo systemctl status xrdp

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Xrdp-servern körs med xrdp-användarrättigheter och tar som standard /etc/ssl/private/ssl-cert-snakeoil.key-certifikatet, som kan ersättas med ditt eget. För att få tillgång till att läsa filen måste du lägga till användaren i gruppen ssl-cert:

sudo adduser xrdp ssl-cert

Standardinställningarna finns i filen /etc/default/xrdp, och alla andra serverkonfigurationsfiler finns i katalogen /etc/xrdp. Huvudparametrarna finns i filen xrdp.ini, som inte behöver ändras. Konfigurationen är väl dokumenterad, och motsvarande manpages ingår:

man xrdp.ini
man xrdp

Allt som återstår är att redigera /etc/xrdp/startwm.sh-skriptet, som körs när användarsessionen initieras. Låt oss först göra en säkerhetskopia 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 du ett skript ungefär så här:

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

Observera: i skript är det bättre att skriva hela sökvägen till de körbara filerna - detta är en god vana. Låt oss göra skriptet körbart och vid denna tidpunkt kan installationen av Xrdp-servern anses vara klar:

sudo chmod 755 /etc/xrdp/startwm.sh

Starta om servern:

sudo systemctl restart xrdp

Konfigurera en brandvägg

Som standard lyssnar Xrdp på TCP-port 3389 på alla gränssnitt. Beroende på den virtuella serverkonfigurationen kan du behöva konfigurera en Netfilter-brandvägg. På Linux görs detta vanligtvis med hjälp av verktyget iptables, men på Ubuntu är det bättre att använda ufw. Om klientens IP-adress är känd utförs konfigurationen med följande kommando:

sudo ufw allow from IP_Address to any port 3389

Du kan tillåta anslutningar från vilken IP som helst så här:

sudo ufw allow 3389

RDP-protokollet stöder kryptering, men att exponera Xrdp-servern för offentliga nätverk är en dålig idé. Om klienten inte har en fast IP bör servern bara lyssna på localhost för att öka säkerheten. Det är bäst att komma åt den via en SSH-tunnel, som säkert kommer att omdirigera trafik från klientdatorn. Vi har ett liknande tillvägagångssätt användes i föregående artikel för VNC-server.

Ansluter till en RDP-server

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

sudo adduser rdpuser

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Låt oss lägga till användaren i sudo-gruppen så att han kan utföra administrationsrelaterade uppgifter. Om det inte finns något sådant behov kan det här steget hoppas över:

sudo gpasswd -a rdpuser sudo

Du kan ansluta till servern med vilken RDP-klient som helst, inklusive den inbyggda Windows Remote Desktop Services-klienten. Om Xrdp lyssnar på det externa gränssnittet kommer inga ytterligare åtgärder att behövas. Det räcker med att ange VPS IP-adress, användarnamn och lösenord i anslutningsinställningarna. Efter anslutning kommer vi att se något i stil med detta:

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Efter den första installationen av skrivbordsmiljön kommer vi att få ett fullfjädrat skrivbord. Som du kan se förbrukar det inte många resurser, även om allt kommer att bero på de applikationer som används.

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Om Xrdp-servern bara lyssnar på localhost måste trafiken på klientdatorn paketeras i en SSH-tunnel (sshd måste köras på VPS). På Windows kan du använda en grafisk SSH-klient (till exempel PuTTY), och på UNIX-system behöver du ssh-verktyget:

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

Efter att tunneln har initierats kommer RDP-klienten inte längre att ansluta till fjärrservern, utan till den lokala värden.

Det är svårare med mobila enheter: SSH-klienter som kan höja en tunnel måste köpas, och i iOS och iPadOS är bakgrundsdriften av tredjepartsapplikationer svår på grund av för bra optimering av energiförbrukningen. På iPhone och iPad kommer du inte att kunna skapa en tunnel i en separat applikation; du behöver en skördarapplikation som själv kan upprätta en RDP-anslutning via SSH. Som till exempel Remote Pro.

Sessionshanterare och användarsessioner

Möjligheten att arbeta med flera användare är implementerad direkt i Xrdp-servern och kräver ingen ytterligare konfiguration. Efter att ha startat tjänsten via systemd körs en process i demonläge, lyssnar på port 3389 och kommunicerar via localhost med sessionshanteraren.

ps aux |grep xrdp

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Sessionshanteraren är vanligtvis inte synlig för användare, eftersom inloggningen och lösenordet som anges i klientinställningarna överförs till den automatiskt. Om detta inte händer eller om det uppstår ett fel under autentiseringen visas ett interaktivt inloggningsfönster istället för skrivbordet.

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04
Automatisk start av sessionshanteraren anges i filen /etc/default/xrdp, och konfigurationen lagras i /etc/xrdp/sesman.ini. Som standard ser det 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
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

Du behöver inte ändra något här, du måste bara inaktivera inloggning med root-rättigheter (AllowRootLogin=false). För varje användare som är auktoriserad i systemet startas en separat xrdp-process: om du kopplar från utan att avsluta sessionen kommer användarprocesser att fortsätta köras som standard och du kan ansluta till sessionen igen. Inställningar kan ändras i filen /etc/xrdp/sesman.ini (sektionen [Sessioner]).

Byta tangentbordslayout

Det är vanligtvis inga problem med ett tvåvägs urklipp, men med den ryska tangentbordslayouten måste du leka lite (den ryska lokalen borde redan vara installerat). Låt oss redigera tangentbordsinställningarna för Xrdp-servern:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Du måste lägga till följande rader i slutet av 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

Allt som återstår är att spara filen och starta om Xrdp:

sudo systemctl restart xrdp

Som du kan se är det inte svårt att ställa in en RDP-server på en Linux VPS, men tidigare artikel Vi har redan diskuterat VNC-inställningen. Utöver dessa teknologier finns det ett annat intressant alternativ: X3Go-systemet som använder ett modifierat NX 2-protokoll. Vi kommer att ta itu med det i nästa publikation.

VPS på Linux med GUI: Kör en RDP-server på Ubuntu 18.04

Källa: will.com

Lägg en kommentar