VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Im vorherigen Artikel haben wir den Start eines VNC-Servers auf einer virtuellen Maschine beliebigen Typs besprochen. Diese Variante hat zahlreiche Nachteile, von denen der wichtigste die hohen Anforderungen an die Bandbreite der Datenübertragung ist. Heute versuchen wir, über RDP (Remote Desktop Protocol) eine Verbindung zum grafischen Desktop unter Linux herzustellen. Das VNC-System basiert auf der Übertragung von Pixelarrays über das RFB-Protokoll (Remote Framebuffer), während RDP die Übertragung komplexerer grafischer Primitiven und hochrangiger Befehle ermöglicht. Normalerweise wird es zur Bereitstellung von Remote-Desktop-Diensten unter Windows verwendet, aber Server für Linux sind ebenfalls verfügbar.

Inhaltsverzeichnis:

Installation der grafischen Umgebung
Lokalisierung des Servers und Installation von Software
Installation und Konfiguration des RDP-Servers
Einstellungen der Firewall
Verbindung zum RDP-Server
Sitzungsmanager und Benutzersitzungen
Umschalten der Tastaturlayouts

Installation der grafischen Umgebung

Wir nehmen eine virtuelle Maschine mit Ubuntu Server 18.04 LTS, zwei CPU-Kernen, vier Gigabyte RAM und einer Festplatte (HDD) mit zwanzig Gigabyte. Eine schwächere Konfiguration eignet sich schlecht für einen grafischen Desktop, obwohl dies von den zu lösenden Aufgaben abhängt. Vergessen Sie nicht, den Rabattcode Habrahabr10 für einen 10% Rabatt bei der Bestellung zu verwenden.

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
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 für XFCE entschieden, da die Anforderungen an die Computerressourcen relativ gering sind.

Lokalisierung des Servers und Installation von Software

Oft werden virtuelle Maschinen nur mit englischer Lokalisierung bereitgestellt. Auf dem Desktop kann Russische benötigt werden, was einfach einzurichten ist. Zuerst installieren wir die Übersetzungen für Systemprogramme:

sudo apt-get install language-pack-ru

Legen wir die Lokalisierung fest:

sudo update-locale LANG=ru_RU.UTF-8

Den gleichen Effekt kann man erzielen, indem man die Datei /etc/default/locale manuell bearbeitet.

Für die Lokalisierung von GNOME und KDE gibt es im Repository die Pakete language-pack-gnome-ru und language-pack-kde-ru – diese werden benötigt, wenn Sie Programme aus diesen Desktop-Umgebungen verwenden. Unter XFCE werden die Übersetzungen zusammen mit den Anwendungen installiert. Danach können Wörterbücher installiert werden:

# Словари для проверки орфографии
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 die Installation von Übersetzungen für einige Anwendungsprogramme 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

Die Vorbereitung der Desktop-Umgebung ist abgeschlossen, es bleibt nur noch, den RDP-Server einzurichten.

Installation und Konfiguration des RDP-Servers

In den Ubuntu-Repositories gibt es den frei verfügbaren Xrdp-Server, den wir verwenden werden:

sudo apt-get install xrdp

Wenn alles normal verlaufen ist, sollte der Server automatisch starten:

sudo systemctl status xrdp

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Der Xrdp-Server wird mit den Rechten des Benutzers xrdp gestartet und verwendet standardmäßig das Zertifikat /etc/ssl/private/ssl-cert-snakeoil.key, welches durch ein eigenes ersetzt werden kann. Um Lesezugriff auf die Datei zu erhalten, muss der Benutzer zur Gruppe ssl-cert hinzugefügt werden:

sudo adduser xrdp ssl-cert

Die Standardeinstellungen befinden sich in der Datei /etc/default/xrdp, alle anderen Konfigurationsdateien des Servers liegen im Verzeichnis /etc/xrdp. Die Hauptparameter sind in der Datei xrdp.ini zu finden, die nicht verändert werden muss. Die Konfiguration ist gut dokumentiert, außerdem sind die entsprechenden Manpages enthalten:

man xrdp.ini
man xrdp

Jetzt bleibt nur noch, das Skript /etc/xrdp/startwm.sh zu bearbeiten, das bei der Initialisierung der Benutzersitzung ausgeführt wird. Zuerst erstellen wir 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 Desktop-Umgebung XFCE zu starten, ist ein Skript mit etwa folgendem Inhalt erforderlich:

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

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

sudo chmod 755 /etc/xrdp/startwm.sh

Wir starten den Server neu:

sudo systemctl restart xrdp

Einstellungen der Firewall

Standardmäßig hört Xrdp auf TCP-Port 3389 auf allen Schnittstellen. Je nach Konfiguration des virtuellen Servers könnte eine Anpassung der Netfilter-Firewall erforderlich sein. In Linux geschieht dies normalerweise mit dem Tool iptables, in Ubuntu ist jedoch die Verwendung von ufw empfehlenswert. Wenn die IP-Adresse des Clients bekannt ist, erfolgt die Anpassung mit folgendem Befehl:

sudo ufw allow from IP_Address to any port 3389

Verbindungen von jeder IP können so zugelassen werden:

sudo ufw allow 3389

Das RDP-Protokoll unterstützt Verschlüsselung, jedoch ist es eine schlechte Idee, den Zugriff auf den Xrdp-Server aus öffentlichen Netzwerken zu gewähren. Wenn der Client keine feste IP hat, sollte der Server zur Erhöhung der Sicherheit nur auf localhost hören. Der Zugriff sollte besser über einen SSH-Tunnel eingerichtet werden, der den Datenverkehr vom Client-Computer sicher umleitet. Einen ähnlichen Ansatz haben wir in dem vorherigen Artikel verwendet für den VNC-Server.

Verbindung zum RDP-Server

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

sudo adduser rdpuser

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Fügen wir den Benutzer zur sudo-Gruppe hinzu, damit er administrativen Aufgaben nachkommen kann. Wenn dies nicht nötig ist, kann dieser Schritt übersprungen werden:

sudo gpasswd -a rdpuser sudo

Zu dem Server kann man mit jedem RDP-Client, einschließlich des eingebauten Clients des Windows-Dienstes für Fernarbeitsplätze, eine Verbindung herstellen. Wenn Xrdp auf die externe Schnittstelle hört, sind keine weiteren Schritte erforderlich. Es genügt, in den Verbindungseinstellungen die IP-Adresse des VPS, den Benutzernamen und das Passwort anzugeben. Nach der Verbindung sehen wir etwa so aus:

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Nach der ersten Einrichtung der Desktop-Umgebung erhalten wir einen vollständigen Desktop. Wie Sie sehen, verbraucht er nicht viel Ressourcen, obwohl alles Weitere von den verwendeten Anwendungen abhängt.

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Wenn der Xrdp-Server nur auf localhost horcht, muss der Verkehr auf dem Client-Computer in einen SSH-Tunnel gepackt werden (sshd muss auf dem VPS laufen). Unter Windows kann ein grafischer SSH-Client (z. B. PuTTY) verwendet werden, während in UNIX-Systemen das Tool ssh benötigt wird:

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

Nach der Initialisierung des Tunnels wird der RDP-Client nicht mehr mit dem Remote-Server, sondern mit dem lokalen Host verbunden.

Mit mobilen Geräten ist es komplizierter: Die SSH-Clients, die einen Tunnel erstellen können, müssen gekauft werden; zudem wird die Hintergrundarbeit von Drittanwendungen in iOS und iPadOS durch eine zu gute Energieoptimierung erschwert. Auf dem iPhone und iPad ist es nicht möglich, einen Tunnel in einer separaten Anwendung zu erstellen — eine Kombi-Anwendung ist erforderlich, die selbst in der Lage ist, eine RDP-Verbindung über SSH herzustellen. Eine solche ist zum Beispiel Remoter Pro.

Sitzungsmanager und Benutzersitzungen

Die Möglichkeit zur Mehrbenutzerarbeit ist direkt im Xrdp-Server implementiert und erfordert keine zusätzliche Konfiguration. Nach dem Start des Dienstes über systemd läuft ein Prozess im Demomodus, hört auf Port 3389 und interagiert über localhost mit dem Sitzungsmanager.

ps aux |grep xrdp

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten

sudo netstat -ap |grep xrdp

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Der Sitzungsmanager ist für den Benutzer normalerweise nicht sichtbar, da der im Klienten eingestellte Benutzername und das Passwort automatisch an ihn übermittelt werden. Wenn dies nicht geschehen ist oder bei der Authentifizierung ein Fehler aufgetreten ist, erscheint anstelle des Desktops ein interaktives Fenster für die Anmeldung.

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten
Der automatische Start des Sitzungsmanagers ist in der Datei /etc/default/xrdp festgelegt, während die Konfiguration in /etc/xrdp/sesman.ini gespeichert ist. Standardmäßig sieht sie ungefähr 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
; Wenn AlwaysGroupCheck=false ist, wird der Zugriff erlaubt
; wenn die Gruppe TerminalServerUsers nicht definiert ist.
AlwaysGroupCheck=false

[Sessions]

Hier muss nichts geändert werden, es sollte nur der Root-Zugang verboten werden (AllowRootLogin=false). Für jeden sich im System authentifizierenden Benutzer wird ein separater xrdp-Prozess gestartet: Wenn man sich trennt, ohne die Sitzung zu beenden, laufen die Benutzerprozesse standardmäßig weiter, und man kann sich erneut mit der Sitzung verbinden. Die Einstellungen können in der Datei /etc/xrdp/sesman.ini (Sektion [Sessions]) geändert werden.

Umschalten der Tastaturlayouts

Mit einem bidirektionalen Clipboard gibt es normalerweise keine Probleme, aber bei der russischen Tastaturbelegung muss man ein wenig herumtüfteln (die russische Locale sollte bereits installiert). Lassen Sie uns die Tastatureinstellungen des Xrdp-Servers bearbeiten:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Am Ende der Konfigurationsdatei müssen folgende Zeilen hinzugefügt werden:

[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

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

sudo systemctl restart xrdp

Wie Sie sehen können, ist es nicht schwer, einen RDP-Server auf einem Linux-VPS einzurichten, und in vorherigen Artikel haben wir bereits die VNC-Konfiguration behandelt. Neben diesen Technologien gibt es noch eine weitere interessante Option: das X2Go-System, das das modifizierte NX 3-Protokoll verwendet. Damit werden wir uns in der nächsten Veröffentlichung befassen.

VPS unter Linux mit grafischer Benutzeroberfläche: RDP-Server auf Ubuntu 18.04 starten

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster