VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
В vorheriger Artikel Wir haben darüber gesprochen, einen VNC-Server auf einer virtuellen Maschine jeglicher Art auszuführen. Diese Option hat viele Nachteile, der Hauptgrund sind die hohen Anforderungen an den Durchsatz der Datenübertragungskanäle. Heute werden wir versuchen, über RDP (Remote Desktop Protocol) eine Verbindung zu einem grafischen Desktop unter Linux herzustellen. Das VNC-System basiert auf der Übertragung von Pixelarrays mithilfe des RFB-Protokolls (Remote Framebuffer), und RDP ermöglicht das Senden komplexerer Grafikprimitive und Befehle auf hoher Ebene. Es wird normalerweise zum Hosten von Remotedesktopdiensten unter Windows verwendet, es sind jedoch auch Server für Linux verfügbar.

Table of Contents:

Installieren der grafischen Umgebung
Russifizierung der Server- und Softwareinstallation
Installieren und Konfigurieren eines RDP-Servers
Einrichten einer Firewall
Verbindung zu einem RDP-Server herstellen
Sitzungsmanager und Benutzersitzungen
Tastaturlayout wechseln

Installieren der grafischen Umgebung

Wir nehmen eine virtuelle Maschine mit Ubuntu Server 18.04 LTS mit zwei Rechenkernen, vier Gigabyte RAM und einer Zwanzig-Gigabyte-Festplatte (HDD). Eine schwächere Konfiguration ist für einen grafischen Desktop nicht geeignet, hängt jedoch von den zu lösenden Aufgaben ab. Vergessen Sie nicht, den Aktionscode Habrahabr10 zu verwenden, um 10 % Rabatt auf Ihre Bestellung zu erhalten.

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Die Installation der Desktop-Umgebung mit allen Abhängigkeiten erfolgt mit dem folgenden Befehl:

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

Wie im vorherigen Fall haben wir uns aufgrund des relativ geringen Bedarfs an Rechenressourcen für XFCE entschieden.

Russifizierung der Server- und Softwareinstallation

Häufig werden virtuelle Maschinen nur mit englischer Lokalisierung bereitgestellt. Auf dem Desktop benötigen Sie möglicherweise Russisch, was einfach einzurichten ist. Lassen Sie uns zunächst Übersetzungen für Systemprogramme installieren:

sudo apt-get install language-pack-ru

Lassen Sie uns die Lokalisierung einrichten:

sudo update-locale LANG=ru_RU.UTF-8

Der gleiche Effekt kann durch manuelles Bearbeiten von /etc/default/locale erzielt werden.

Für die Lokalisierung von GNOME und KDE verfügt das Repository über die Pakete language-pack-gnome-ru und language-pack-kde-ru – Sie benötigen diese, wenn Sie Programme aus diesen Desktop-Umgebungen verwenden. In XFCE werden Übersetzungen mit Anwendungen installiert. Als nächstes können Sie die Wörterbücher installieren:

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

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

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

Darüber hinaus kann für einige Anwendungsprogramme die Installation von Übersetzungen erforderlich sein:

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

Damit ist die Vorbereitung der Desktop-Umgebung abgeschlossen, es bleibt nur noch die Konfiguration des RDP-Servers.

Installieren und Konfigurieren eines RDP-Servers

Die Ubuntu-Repositories verfügen über einen frei verteilten Xrdp-Server, den wir verwenden werden:

sudo apt-get install xrdp

Wenn alles gut gelaufen ist, sollte der Server automatisch starten:

sudo systemctl status xrdp

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Der Xrdp-Server läuft mit xrdp-Benutzerrechten und verwendet standardmäßig das Zertifikat /etc/ssl/private/ssl-cert-snakeoil.key, das durch Ihr eigenes ersetzt werden kann. Um Zugriff zum Lesen der Datei zu haben, müssen Sie den Benutzer zur Gruppe ssl-cert hinzufügen:

sudo adduser xrdp ssl-cert

Die Standardeinstellungen finden Sie in der Datei /etc/default/xrdp und alle anderen Serverkonfigurationsdateien befinden sich im Verzeichnis /etc/xrdp. Die Hauptparameter befinden sich in der Datei xrdp.ini, die nicht geändert werden muss. Die Konfiguration ist gut dokumentiert und die entsprechenden Manpages sind enthalten:

man xrdp.ini
man xrdp

Es bleibt nur noch die Bearbeitung des Skripts /etc/xrdp/startwm.sh, das bei der Initialisierung der Benutzersitzung ausgeführt wird. Erstellen wir zunächst eine Sicherungskopie des Skripts aus der Distribution:

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

Um die XFCE-Desktopumgebung zu starten, benötigen Sie ein Skript wie dieses:

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

Bitte beachten Sie: In Skripten ist es besser, den vollständigen Pfad zu den ausführbaren Dateien zu schreiben – das ist eine gute Angewohnheit. Machen wir das Skript ausführbar und an diesem Punkt kann die Einrichtung des Xrdp-Servers als abgeschlossen betrachtet werden:

sudo chmod 755 /etc/xrdp/startwm.sh

Starten Sie den Server neu:

sudo systemctl restart xrdp

Einrichten einer Firewall

Standardmäßig überwacht Xrdp auf allen Schnittstellen den TCP-Port 3389. Abhängig von der Konfiguration des virtuellen Servers müssen Sie möglicherweise eine Netfilter-Firewall konfigurieren. Unter Linux erfolgt dies normalerweise mit dem Dienstprogramm iptables, unter Ubuntu ist es jedoch besser, ufw zu verwenden. Wenn die IP-Adresse des Clients bekannt ist, erfolgt die Konfiguration mit folgendem Befehl:

sudo ufw allow from IP_Address to any port 3389

Sie können Verbindungen von jeder IP wie folgt zulassen:

sudo ufw allow 3389

Das RDP-Protokoll unterstützt die Verschlüsselung, aber es ist keine gute Idee, den Xrdp-Server öffentlichen Netzwerken zugänglich zu machen. Wenn der Client keine feste IP hat, sollte der Server zur Erhöhung der Sicherheit nur auf localhost lauschen. Der Zugriff erfolgt am besten über einen SSH-Tunnel, der den Datenverkehr vom Client-Computer sicher umleitet. Wir haben einen ähnlichen Ansatz im vorherigen Artikel verwendet für VNC-Server.

Verbindung zu einem RDP-Server herstellen

Um mit der Desktop-Umgebung zu arbeiten, ist es besser, einen separaten unprivilegierten Benutzer zu erstellen:

sudo adduser rdpuser

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Fügen wir den Benutzer zur Sudo-Gruppe hinzu, damit er verwaltungsbezogene Aufgaben ausführen kann. Wenn kein Bedarf besteht, können Sie diesen Schritt überspringen:

sudo gpasswd -a rdpuser sudo

Sie können mit jedem RDP-Client eine Verbindung zum Server herstellen, einschließlich des integrierten Windows-Remotedesktopdienste-Clients. Wenn Xrdp auf die externe Schnittstelle lauscht, sind keine weiteren Aktionen erforderlich. Es reicht aus, in den Verbindungseinstellungen die VPS-IP-Adresse, den Benutzernamen und das Passwort anzugeben. Nach dem Herstellen der Verbindung sehen wir etwa Folgendes:

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Nach der Ersteinrichtung der Desktop-Umgebung erhalten wir einen vollwertigen Desktop. Wie Sie sehen, verbraucht es nicht viele Ressourcen, obwohl alles von den verwendeten Anwendungen abhängt.

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Wenn der Xrdp-Server nur auf localhost lauscht, muss der Datenverkehr auf dem Client-Computer in einen SSH-Tunnel gepackt werden (sshd muss auf dem VPS ausgeführt werden). Unter Windows können Sie einen grafischen SSH-Client (z. B. PuTTY) verwenden und auf UNIX-Systemen benötigen Sie das Dienstprogramm ssh:

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

Nachdem der Tunnel initialisiert wurde, verbindet sich der RDP-Client nicht mehr mit dem Remote-Server, sondern mit dem lokalen Host.

Bei mobilen Geräten ist es schwieriger: SSH-Clients, die einen Tunnel aufbauen können, müssen gekauft werden, und in iOS und iPadOS ist der Hintergrundbetrieb von Drittanbieteranwendungen aufgrund einer zu guten Optimierung des Energieverbrauchs schwierig. Auf iPhone und iPad können Sie keinen Tunnel in einer separaten Anwendung erstellen; Sie benötigen eine Harvester-Anwendung, die selbst eine RDP-Verbindung über SSH aufbauen kann. Wie zum Beispiel Remoter Pro.

Sitzungsmanager und Benutzersitzungen

Die Fähigkeit zum Mehrbenutzer-Arbeiten ist direkt im Xrdp-Server implementiert und erfordert keine zusätzliche Konfiguration. Nach dem Starten des Dienstes über systemd läuft ein Prozess im Daemon-Modus, lauscht auf Port 3389 und kommuniziert über localhost mit dem Sitzungsmanager.

ps aux |grep xrdp

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Der Sitzungsmanager ist für Benutzer normalerweise nicht sichtbar, da der in den Client-Einstellungen angegebene Benutzername und das Kennwort automatisch an ihn übertragen werden. Geschieht dies nicht oder kommt es zu einem Fehler bei der Authentifizierung, erscheint anstelle des Desktops ein interaktives Anmeldefenster.

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04
Der automatische Start des Sitzungsmanagers ist in der Datei /etc/default/xrdp angegeben und die Konfiguration ist in /etc/xrdp/sesman.ini gespeichert. Standardmäßig sieht es etwa so aus:

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

Hier müssen Sie nichts ändern, Sie müssen lediglich die Anmeldung mit Root-Rechten deaktivieren (AllowRootLogin=false). Für jeden im System berechtigten Benutzer wird ein separater xrdp-Prozess gestartet: Wenn Sie die Verbindung trennen, ohne die Sitzung zu beenden, werden Benutzerprozesse standardmäßig weiterhin ausgeführt und Sie können sich erneut mit der Sitzung verbinden. Einstellungen können in der Datei /etc/xrdp/sesman.ini (Abschnitt [Sitzungen]) geändert werden.

Tastaturlayout wechseln

Normalerweise gibt es mit einer Zwei-Wege-Zwischenablage keine Probleme, aber mit dem russischen Tastaturlayout müssen Sie ein wenig herumspielen (das russische Gebietsschema sollte bereits vorhanden sein). installiert). Bearbeiten wir die Tastatureinstellungen des Xrdp-Servers:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Sie müssen die folgenden Zeilen am Ende der Konfigurationsdatei hinzufügen:

[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

Jetzt müssen Sie nur noch die Datei speichern und Xrdp neu starten:

sudo systemctl restart xrdp

Wie Sie sehen, ist es nicht schwierig, einen RDP-Server auf einem Linux-VPS einzurichten, aber vorheriger Artikel Das VNC-Setup haben wir bereits besprochen. Zusätzlich zu diesen Technologien gibt es eine weitere interessante Option: das X3Go-System, das ein modifiziertes NX 2-Protokoll verwendet. Wir werden uns in der nächsten Veröffentlichung damit befassen.

VPS unter Linux mit grafischer Oberfläche: Starten eines RDP-Servers unter Ubuntu 18.04

Source: habr.com

Kommentar hinzufügen