VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
В article précédent nous avons discuté de l'exécution d'un serveur VNC sur une machine virtuelle de tout type. Cette option présente de nombreux inconvénients, dont le principal est les exigences élevées en matière de débit des canaux de transmission de données. Aujourd'hui, nous allons essayer de nous connecter à un bureau graphique sous Linux via RDP (Remote Desktop Protocol). Le système VNC est basé sur la transmission de tableaux de pixels à l'aide du protocole RFB (Remote Framebuffer), et RDP vous permet d'envoyer des primitives graphiques plus complexes et des commandes de haut niveau. Il est généralement utilisé pour héberger les services Bureau à distance sous Windows, mais des serveurs pour Linux sont également disponibles.

Table des matières:

Installation de l'environnement graphique
Russification du serveur et installation du logiciel
Installer et configurer un serveur RDP
Configuration du pare-feu
Connexion à un serveur RDP
Gestionnaire de sessions et sessions utilisateur
Changer la disposition du clavier

Installation de l'environnement graphique

Nous prendrons une machine virtuelle avec Ubuntu Server 18.04 LTS avec deux cœurs de calcul, quatre Go de RAM et un disque dur (HDD) de vingt Go. Une configuration plus faible ne convient pas à un bureau graphique, bien que cela dépende des tâches à résoudre. N'oubliez pas d'utiliser le code promo Habrahabr10 pour bénéficier d'une réduction de 10 % sur votre commande.

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
L'installation de l'environnement de bureau avec toutes les dépendances se fait avec la commande suivante :

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

Comme dans le cas précédent, nous avons choisi XFCE en raison de ses besoins relativement faibles en ressources informatiques.

Russification du serveur et installation du logiciel

Souvent, les machines virtuelles sont déployées uniquement avec une localisation en anglais. Sur le bureau, vous aurez peut-être besoin du russe, qui est facile à configurer. Tout d'abord, installons les traductions pour les programmes système :

sudo apt-get install language-pack-ru

Configurons la localisation :

sudo update-locale LANG=ru_RU.UTF-8

Le même effet peut être obtenu en éditant manuellement le fichier /etc/default/locale.

Pour la localisation de GNOME et KDE, le référentiel contient les packages Language-pack-gnome-ru et Language-pack-kde-ru - vous en aurez besoin si vous utilisez des programmes de ces environnements de bureau. Dans XFCE, les traductions sont installées avec les applications. Ensuite, vous pouvez installer les dictionnaires :

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

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

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

De plus, l'installation de traductions peut être requise pour certains programmes d'application :

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

Ceci termine la préparation de l'environnement de bureau, il ne reste plus qu'à configurer le serveur RDP.

Installer et configurer un serveur RDP

Les référentiels Ubuntu disposent d'un serveur Xrdp distribué gratuitement, que nous utiliserons :

sudo apt-get install xrdp

Si tout s'est bien passé, le serveur devrait démarrer automatiquement :

sudo systemctl status xrdp

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Le serveur Xrdp fonctionne avec les droits d'utilisateur xrdp et prend par défaut le certificat /etc/ssl/private/ssl-cert-snakeoil.key, qui peut être remplacé par le vôtre. Pour avoir accès à la lecture du fichier, vous devez ajouter l'utilisateur au groupe ssl-cert :

sudo adduser xrdp ssl-cert

Les paramètres par défaut se trouvent dans le fichier /etc/default/xrdp et tous les autres fichiers de configuration du serveur se trouvent dans le répertoire /etc/xrdp. Les principaux paramètres se trouvent dans le fichier xrdp.ini, qui n'a pas besoin d'être modifié. La configuration est bien documentée et les pages de manuel correspondantes sont incluses :

man xrdp.ini
man xrdp

Il ne reste plus qu'à éditer le script /etc/xrdp/startwm.sh, qui est exécuté à l'initialisation de la session utilisateur. Commençons par faire une copie de sauvegarde du script de la distribution :

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

Pour démarrer l'environnement de bureau XFCE, vous aurez besoin d'un script ressemblant à ceci :

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

Attention : dans les scripts, il est préférable d'écrire le chemin complet vers les fichiers exécutables - c'est une bonne habitude. Rendons le script exécutable et à ce stade, la configuration du serveur Xrdp peut être considérée comme terminée :

sudo chmod 755 /etc/xrdp/startwm.sh

Redémarrez le serveur :

sudo systemctl restart xrdp

Configuration du pare-feu

Par défaut, Xrdp écoute le port TCP 3389 sur toutes les interfaces. En fonction de la configuration du serveur virtuel, vous devrez peut-être configurer un pare-feu Netfilter. Sous Linux, cela se fait généralement à l'aide de l'utilitaire iptables, mais sous Ubuntu, il est préférable d'utiliser ufw. Si l'adresse IP du client est connue, la configuration s'effectue avec la commande suivante :

sudo ufw allow from IP_Address to any port 3389

Vous pouvez autoriser les connexions depuis n'importe quelle adresse IP comme ceci :

sudo ufw allow 3389

Le protocole RDP prend en charge le cryptage, mais exposer le serveur Xrdp aux réseaux publics est une mauvaise idée. Si le client n'a pas d'adresse IP fixe, le serveur ne doit écouter que localhost pour augmenter la sécurité. Il est préférable d'y accéder via un tunnel SSH, qui redirigera en toute sécurité le trafic depuis l'ordinateur client. Nous avons une approche similaire utilisé dans l'article précédent pour le serveur VNC.

Connexion à un serveur RDP

Pour travailler avec l'environnement de bureau, il est préférable de créer un utilisateur non privilégié distinct :

sudo adduser rdpuser

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Ajoutons l'utilisateur au groupe sudo afin qu'il puisse effectuer des tâches liées à l'administration. Si cela n'est pas nécessaire, vous pouvez ignorer cette étape :

sudo gpasswd -a rdpuser sudo

Vous pouvez vous connecter au serveur à l'aide de n'importe quel client RDP, y compris le client intégré des services Bureau à distance Windows. Si Xrdp écoute l'interface externe, aucune action supplémentaire ne sera nécessaire. Il suffit de préciser l'adresse IP du VPS, le nom d'utilisateur et le mot de passe dans les paramètres de connexion. Après la connexion, nous verrons quelque chose comme ceci :

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Après la configuration initiale de l'environnement de bureau, nous obtiendrons un bureau à part entière. Comme vous pouvez le constater, il ne consomme pas beaucoup de ressources, même si tout dépendra des applications utilisées.

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Si le serveur Xrdp écoute uniquement localhost, le trafic sur l'ordinateur client devra être regroupé dans un tunnel SSH (sshd doit être exécuté sur le VPS). Sous Windows, vous pouvez utiliser un client SSH graphique (par exemple, PuTTY), et sur les systèmes UNIX, vous avez besoin de l'utilitaire ssh :

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

Une fois le tunnel initialisé, le client RDP ne se connectera plus au serveur distant, mais à l'hôte local.

C'est plus difficile avec les appareils mobiles : il faudra acheter des clients SSH capables de monter un tunnel, et sous iOS et iPadOS, le fonctionnement en arrière-plan des applications tierces est difficile en raison d'une trop bonne optimisation de la consommation d'énergie. Sur iPhone et iPad, vous ne pourrez pas créer de tunnel dans une application distincte ; vous aurez besoin d'une application moissonneuse capable d'établir elle-même une connexion RDP via SSH. Comme par exemple Plus à distance Pro.

Gestionnaire de sessions et sessions utilisateur

La possibilité de travailler en multi-utilisateurs est implémentée directement dans le serveur Xrdp et ne nécessite aucune configuration supplémentaire. Après avoir démarré le service via systemd, un processus s'exécute en mode démon, écoute sur le port 3389 et communique via localhost avec le gestionnaire de session.

ps aux |grep xrdp

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Le gestionnaire de session n'est généralement pas visible pour les utilisateurs, car le login et le mot de passe spécifiés dans les paramètres client y sont automatiquement transférés. Si cela ne se produit pas ou s'il y a une erreur lors de l'authentification, une fenêtre de connexion interactive apparaîtra à la place du bureau.

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04
Le lancement automatique du gestionnaire de session est spécifié dans le fichier /etc/default/xrdp et la configuration est stockée dans /etc/xrdp/sesman.ini. Par défaut, cela ressemble à ceci :

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

Vous n’avez rien à changer ici, il vous suffit de désactiver la connexion avec les droits root (AllowRootLogin=false). Pour chaque utilisateur autorisé dans le système, un processus xrdp distinct est lancé : si vous vous déconnectez sans mettre fin à la session, les processus utilisateur continueront à s'exécuter par défaut et vous pourrez vous reconnecter à la session. Les paramètres peuvent être modifiés dans le fichier /etc/xrdp/sesman.ini (section [Sessions]).

Changer la disposition du clavier

Il n'y a généralement aucun problème avec un presse-papiers bidirectionnel, mais avec la disposition du clavier russe, vous devrez jouer un peu (les paramètres régionaux russes devraient déjà être installé). Modifions les paramètres du clavier du serveur Xrdp :

sudo nano /etc/xrdp/xrdp_keyboard.ini

Vous devez ajouter les lignes suivantes à la fin du fichier de configuration :

[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

Il ne reste plus qu'à sauvegarder le fichier et redémarrer Xrdp :

sudo systemctl restart xrdp

Comme vous pouvez le constater, il n'est pas difficile de configurer un serveur RDP sur un VPS Linux, mais article précédent Nous avons déjà discuté de la configuration de VNC. En plus de ces technologies, il existe une autre option intéressante : le système X3Go utilisant un protocole NX 2 modifié. Nous en traiterons dans la prochaine publication.

VPS sous Linux avec une interface graphique : lancer un serveur RDP sur Ubuntu 18.04

Source: habr.com

Ajouter un commentaire