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 bespraken het draaien van een VNC-server op een virtuele machine van welk type dan ook. Deze optie heeft veel nadelen, waarvan de belangrijkste de hoge eisen zijn aan de doorvoer van datatransmissiekanalen. Vandaag zullen we proberen verbinding te maken met een grafische desktop op Linux via RDP (Remote Desktop Protocol). Het VNC-systeem is gebaseerd op het verzenden van reeksen pixels met behulp van het RFB-protocol (Remote Framebuffer), en met RDP kunt u complexere grafische primitieven en opdrachten op hoog niveau verzenden. Het wordt doorgaans gebruikt om Remote Desktop Services op Windows te hosten, maar er zijn ook servers voor Linux beschikbaar.

авление:

Het installeren van de grafische omgeving
Russificatie van de server en software-installatie
Een RDP-server installeren en configureren
Een firewall instellen
Verbinding maken met een RDP-server
Sessiebeheer en gebruikerssessies
Toetsenbordindelingen wijzigen

Het installeren van de grafische omgeving

We nemen 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 geschikt voor een grafische desktop, hoewel dit afhankelijk is van de taken die worden opgelost. Vergeet niet de promotiecode Habrahabr10 te gebruiken om 10% korting te krijgen op uw bestelling.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Het installeren van de desktopomgeving met alle afhankelijkheden gebeurt met het volgende commando:

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

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

Russificatie van de server en software-installatie

Vaak worden virtuele machines alleen ingezet met Engelse lokalisatie. Op de desktop heb je mogelijk Russisch nodig, wat eenvoudig in te stellen is. Laten we eerst vertalingen voor systeemprogramma's installeren:

sudo apt-get install language-pack-ru

Laten we lokalisatie instellen:

sudo update-locale LANG=ru_RU.UTF-8

Hetzelfde effect kan worden bereikt door het bestand /etc/default/locale.

Voor de lokalisatie van GNOME en KDE heeft de repository de pakketten taalpakket-gnome-ru en taalpakket-kde-ru - u zult deze nodig hebben als u programma's uit deze bureaubladomgevingen gebruikt. In XFCE worden vertalingen bij 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 voor sommige toepassingsprogramma's de installatie van vertalingen vereist zijn:

# Браузер 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 overblijft is het configureren van de RDP-server.

Een RDP-server installeren en configureren

De Ubuntu-repository's hebben een vrij gedistribueerde Xrdp-server, die we zullen gebruiken:

sudo apt-get install xrdp

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

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 /etc/ssl/private/ssl-cert-snakeoil.key-certificaat, dat kan worden vervangen door uw eigen certificaat. Om toegang te krijgen om het bestand te lezen, moet u de gebruiker toevoegen aan de ssl-cert groep:

sudo adduser xrdp ssl-cert

De standaardinstellingen zijn te vinden in het bestand /etc/default/xrdp, en alle andere serverconfiguratiebestanden bevinden zich in de directory /etc/xrdp. De belangrijkste parameters bevinden zich in het xrdp.ini-bestand, dat niet hoeft te worden gewijzigd. De configuratie is goed gedocumenteerd en de bijbehorende manpagina's zijn inbegrepen:

man xrdp.ini
man xrdp

Het enige dat overblijft is het bewerken van het script /etc/xrdp/startwm.sh, dat wordt uitgevoerd wanneer de gebruikerssessie wordt geïnitialiseerd. Laten we eerst een back-up maken van het script uit 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 als dit nodig:

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

Let op: in scripts is het beter om het volledige pad naar de uitvoerbare bestanden te schrijven - dit is een goede gewoonte. Laten we het script uitvoerbaar maken en op dit punt kan de installatie van de Xrdp-server als voltooid worden beschouwd:

sudo chmod 755 /etc/xrdp/startwm.sh

Start de server opnieuw op:

sudo systemctl restart xrdp

Een firewall instellen

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

sudo ufw allow from IP_Address to any port 3389

U kunt verbindingen vanaf elk IP-adres als volgt toestaan:

sudo ufw allow 3389

Het RDP-protocol ondersteunt encryptie, maar het blootstellen van de Xrdp-server aan openbare netwerken is een slecht idee. Als de client geen vast IP-adres heeft, moet de server alleen naar localhost luisteren om de veiligheid te vergroten. U kunt er het beste toegang toe krijgen via een SSH-tunnel, die het verkeer vanaf de clientcomputer veilig omleidt. Wij hebben een vergelijkbare aanpak gebruikt in het vorige artikel voor VNC-server.

Verbinding maken met een RDP-server

Om met de desktopomgeving te werken, is het beter om een ​​aparte gebruiker zonder rechten 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 beheergerelateerde taken 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 naar de externe interface luistert, zijn er geen aanvullende acties nodig. Het volstaat om het VPS IP-adres, de gebruikersnaam en het wachtwoord op te geven in de verbindingsinstellingen. Nadat we verbinding hebben gemaakt, zien we zoiets als dit:

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 volwaardige desktop. Zoals u kunt zien, verbruikt het niet veel bronnen, hoewel alles afhangt van de gebruikte applicaties.

VPS op Linux met een grafische interface: lancering van een RDP-server op Ubuntu 18.04
Als de Xrdp-server alleen naar localhost luistert, zal het verkeer op de clientcomputer in een SSH-tunnel moeten worden verpakt (sshd moet op de VPS draaien). Op Windows kunt u een grafische SSH-client gebruiken (bijvoorbeeld PuTTY), en op UNIX-systemen heeft 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, zal de RDP-client niet langer verbinding maken met de externe server, maar met de lokale host.

Met mobiele apparaten is het moeilijker: SSH-clients die een tunnel kunnen bouwen, zullen moeten worden aangeschaft, en in iOS en iPadOS is de achtergrondwerking van applicaties van derden moeilijk vanwege een te goede optimalisatie van het energieverbruik. Op iPhone en iPad kun je geen tunnel in een aparte applicatie maken; je hebt een harvester-applicatie nodig die zelf een RDP-verbinding via SSH tot stand kan brengen. Zoals bijvoorbeeld Afgelegen Pro.

Sessiebeheer en gebruikerssessies

De mogelijkheid om met meerdere gebruikers te werken wordt rechtstreeks in de Xrdp-server geïmplementeerd en vereist geen aanvullende configuratie. Na het starten van de dienst via systemd 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 sessiebeheerder is meestal niet zichtbaar voor gebruikers, omdat de login en het wachtwoord die zijn opgegeven in de clientinstellingen er automatisch naartoe worden overgebracht. Als dit niet gebeurt of als er een fout optreedt tijdens de authenticatie, 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 sessiebeheerder 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]

Je hoeft hier niets te veranderen, je hoeft alleen maar het inloggen met rootrechten uit te schakelen (AllowRootLogin=false). Voor elke in het systeem geautoriseerde gebruiker 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. Instellingen kunnen worden gewijzigd in het bestand /etc/xrdp/sesman.ini (sectie [Sessies]).

Toetsenbordindelingen wijzigen

Er zijn meestal geen problemen met een tweerichtingsklembord, maar met de Russische toetsenbordindeling zul je een beetje moeten spelen (de Russische landinstelling zou al moeten zijn geïnstalleerd). Laten we de toetsenbordinstellingen van de Xrdp-server bewerken:

sudo nano /etc/xrdp/xrdp_keyboard.ini

U moet de volgende regels toevoegen aan het einde van het configuratiebestand:

[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 overblijft is het bestand opslaan en Xrdp opnieuw opstarten:

sudo systemctl restart xrdp

Zoals je ziet is het niet moeilijk om een ​​RDP-server op een Linux VPS op te zetten, maar vorige artikel We hebben de VNC-configuratie al besproken. Naast deze technologieën is er nog een interessante optie: het X3Go-systeem dat gebruik maakt van een aangepast NX 2-protocol. We zullen het in de volgende publicatie behandelen.

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

Bron: www.habr.com

Voeg een reactie