VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
В vorige artikel We hebben besproken hoe u een VNC-server op elk type virtuele machine kunt draaien. Deze optie kent veel nadelen, waarvan de belangrijkste de hoge eisen aan de bandbreedte van de gegevensoverdrachtkanalen zijn. Vandaag proberen we verbinding te maken met een grafisch bureaublad op Linux via RDP (Remote Desktop Protocol). Het VNC-systeem is gebaseerd op de transmissie van pixelarrays via het RFB-protocol (Remote Framebuffer), terwijl RDP het verzenden van complexere grafische primitieven en hoogwaardige opdrachten mogelijk maakt. Het wordt meestal gebruikt om Remote Desktop Services op Windows te hosten, maar er zijn ook servers voor Linux beschikbaar.

авление:

Een grafische omgeving installeren
Russificatie van de server- en software-installatie
RDP-server installeren en configureren
Een firewall instellen
Verbinding maken met RDP-server
Sessiebeheerder en gebruikersessies
Toetsenbordindelingen wijzigen

Een grafische omgeving installeren

We gebruiken een virtuele machine met Ubuntu Server 18.04 LTS met twee rekenkernen, vier gigabyte RAM en een harde schijf (HDD) van twintig gigabyte. Een zwakkere configuratie is niet zo geschikt voor een grafisch bureaublad, hoewel dit afhankelijk is van de taken die moeten worden uitgevoerd. Vergeet niet de promotiecode Habrahabr10 te gebruiken om 10% korting op uw bestelling te krijgen.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
De installatie van de desktopomgeving met alle afhankelijkheden wordt uitgevoerd met de volgende opdracht:

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

Net als in het vorige geval hebben we gekozen voor XFCE vanwege de relatief lage computervereisten.

Russificatie van de server- en software-installatie

Vaak worden virtuele machines alleen met Engelse lokalisatie geïmplementeerd. Op het bureaublad heeft u mogelijk Russisch nodig, maar dit is eenvoudig in te stellen. Laten we eerst vertalingen voor systeemprogramma's installeren:

sudo apt-get install language-pack-ru

Laten we de lokalisatie instellen:

sudo update-locale LANG=ru_RU.UTF-8

U kunt hetzelfde effect bereiken door het bestand /etc/default/locale handmatig te bewerken.

Voor de lokalisatie van GNOME en KDE bevat de repository de pakketten language-pack-gnome-ru en language-pack-kde-ru. Deze hebt u nodig als u programma's uit deze desktopomgevingen wilt gebruiken. In XFCE worden vertalingen samen met applicaties geïnstalleerd. Vervolgens kunt u de woordenboeken installeren:

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

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

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

Bovendien kan het voor sommige toepassingen nodig zijn om vertalingen te installeren:

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

Hiermee is de voorbereiding van de desktopomgeving voltooid. Het enige dat nog resteert, is het configureren van de RDP-server.

RDP-server installeren en configureren

Er is een gratis verspreide Xrdp-server in de Ubuntu-repositories, die we zullen gebruiken:

sudo apt-get install xrdp

Als alles goed is gegaan, zou de server automatisch moeten starten:

sudo systemctl status xrdp

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
De Xrdp-server draait met Xrdp-gebruikersrechten en gebruikt standaard het certificaat /etc/ssl/private/ssl-cert-snakeoil.key, dat u kunt vervangen door uw eigen certificaat. Om het bestand te kunnen lezen, moet u de gebruiker toevoegen aan de groep ssl-cert:

sudo adduser xrdp ssl-cert

De standaardinstellingen vindt u in het bestand /etc/default/xrdp. Alle andere serverconfiguratiebestanden bevinden zich in de map /etc/xrdp. De belangrijkste parameters staan ​​in het bestand xrdp.ini en hoeven niet te worden gewijzigd. De configuratie is goed gedocumenteerd en het pakket bevat ook de bijbehorende manpagina's:

man xrdp.ini
man xrdp

Het enige dat nog rest is het bewerken van het script /etc/xrdp/startwm.sh, dat wordt uitgevoerd wanneer de gebruikersessie wordt geïnitialiseerd. Laten we eerst een back-up maken van het script vanuit de distributie:

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

Om de XFCE-desktopomgeving te starten, hebt u een script nodig dat er ongeveer zo uitziet:

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

Let op: het is beter om het volledige pad naar uitvoerbare bestanden in scripts te schrijven. Dit is een goede gewoonte. Laten we het script uitvoerbaar maken. Hiermee is de Xrdp-serverinstallatie voltooid:

sudo chmod 755 /etc/xrdp/startwm.sh

Start de server opnieuw:

sudo systemctl restart xrdp

Een firewall instellen

Standaard luistert Xrdp op TCP-poort 3389 op alle interfaces. Afhankelijk van de configuratie van uw virtuele server moet u mogelijk de Netfilter-firewall configureren. In Linux wordt dit meestal gedaan met het hulpprogramma iptables, maar in Ubuntu is het beter om ufw te gebruiken. Als het IP-adres van de client bekend is, wordt de configuratie uitgevoerd met de volgende opdracht:

sudo ufw allow from IP_Address to any port 3389

U kunt verbindingen vanaf elk IP-adres toestaan, zoals hieronder:

sudo ufw allow 3389

Het RDP-protocol ondersteunt encryptie, maar het is geen goed idee om toegang tot de Xrdp-server te verlenen vanaf openbare netwerken. Als de client geen vast IP-adres heeft, moet de server alleen op localhost luisteren om de beveiliging te verbeteren. Het is beter om de toegang te configureren via een SSH-tunnel, die het verkeer van de clientcomputer veilig omleidt. Wij hanteren een soortgelijke aanpak gebruikt in het vorige artikel voor VNC-server.

Verbinding maken met RDP-server

Om met de desktopomgeving te werken, is het beter om een ​​aparte, niet-bevoorrechte gebruiker aan te maken:

sudo adduser rdpuser

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Laten we de gebruiker toevoegen aan de sudo-groep, zodat hij beheertaken kan uitvoeren. Als dit niet nodig is, kunt u deze stap overslaan:

sudo gpasswd -a rdpuser sudo

U kunt verbinding maken met de server via elke RDP-client, inclusief de ingebouwde Windows Remote Desktop Services-client. Als Xrdp luistert op de externe interface, zijn er geen extra stappen nodig. Het volstaat om het VPS IP-adres, de gebruikersnaam en het wachtwoord in de verbindingsinstellingen op te geven. Nadat we verbinding hebben gemaakt, zien we zoiets:

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Na de eerste installatie van de desktopomgeving krijgen we een volwaardig bureaublad. Zoals u kunt zien, verbruikt het niet veel bronnen, maar verder hangt alles af van de applicaties die u gebruikt.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Als de Xrdp-server alleen naar localhost luistert, moet het verkeer in een SSH-tunnel op de clientcomputer worden verpakt (sshd moet op de VPS draaien). Op Windows kunt u een grafische SSH-client gebruiken (bijvoorbeeld PuTTY), en op UNIX-systemen hebt u het ssh-hulpprogramma nodig:

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

Nadat de tunnel is geïnitialiseerd, maakt de RDP-client geen verbinding meer met de externe server, maar met de lokale host.

Bij mobiele apparaten is het ingewikkelder: je moet SSH-clients kopen die een tunnel kunnen opzetten. Bovendien is het in iOS en iPadOS lastig om op de achtergrond met applicaties van derden te werken, omdat het energieverbruik te goed is geoptimaliseerd. Op iPhone en iPad kun je geen tunnel opzetten in een aparte applicatie. Je hebt een gecombineerde applicatie nodig die zelf een RDP-verbinding via SSH kan opzetten. Zoals bijvoorbeeld Afstandsbediening Pro.

Sessiebeheerder en gebruikersessies

De mogelijkheid om met meerdere gebruikers te werken is rechtstreeks in de Xrdp-server geïmplementeerd en vereist geen aanvullende configuratie. Nadat de service via systemd is gestart, draait één proces in daemon-modus, luistert op poort 3389 en communiceert via localhost met de sessiebeheerder.

ps aux |grep xrdp

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
De sessiemanager is doorgaans niet zichtbaar voor gebruikers, omdat de in de clientinstellingen opgegeven login en wachtwoord automatisch naar de sessiemanager worden overgebracht. Als dit niet gebeurt of er treedt een authenticatiefout op, verschijnt er een interactief inlogvenster in plaats van het bureaublad.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Het automatisch starten van de sessiemanager wordt gespecificeerd in het bestand /etc/default/xrdp, en de configuratie wordt opgeslagen in /etc/xrdp/sesman.ini. Standaard ziet het er ongeveer zo uit:

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

U hoeft hier niets te veranderen, u hoeft alleen maar inloggen met root-rechten te verbieden (AllowRootLogin=false). Voor elke gebruiker die op het systeem is aangemeld, wordt een afzonderlijk xrdp-proces gestart. Als u de verbinding verbreekt zonder de sessie te beëindigen, blijven de gebruikersprocessen standaard actief en kunt u opnieuw verbinding maken met de sessie. De instellingen kunnen worden gewijzigd in het bestand /etc/xrdp/sesman.ini (sectie [Sessies]).

Toetsenbordindelingen wijzigen

Er zijn doorgaans geen problemen met het tweerichtingsklembord, maar met de Russische toetsenbordindeling moet u wat magie toepassen (de Russische landinstelling zou al moeten zijn ingesteld). geïnstalleerd). Laten we de toetsenbordinstellingen van de Xrdp-server bewerken:

sudo nano /etc/xrdp/xrdp_keyboard.ini

De volgende regels moeten aan het einde van het configuratiebestand worden toegevoegd:

[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

Het enige dat nu nog rest is het opslaan van het bestand en het opnieuw opstarten van Xrdp:

sudo systemctl restart xrdp

Zoals u kunt zien, is het opzetten van een RDP-server op een Linux VPS niet moeilijk en in vorige artikel We hebben de VNC-installatie al besproken. Naast deze technologieën is er nog een interessante optie: het X3Go-systeem, dat gebruikmaakt van een aangepast NX 2-protocol. Wij zullen hier in de volgende publicatie op ingaan.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04

Bron: www.habr.com