Dans l' article précédent, nous avons couvert l'exécution d'un serveur VNC sur n'importe quel type de machine virtuelle. Cette option présente de nombreux inconvénients, le principal étant des exigences élevées en matière de bande passante des canaux de transmission de données. Aujourd'hui, nous allons essayer de nous connecter à un bureau graphique Linux en utilisant RDP (Remote Desktop Protocol). VNC est basé sur la transmission de tableaux de pixels à l'aide du protocole RFB (Remote Framebuffer), tandis que RDP permet l'envoi de primitives graphiques plus complexes et de commandes de haut niveau. Il est couramment utilisé pour organiser 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 Installation et configuration du serveur RDP
Configuration du pare-feu
Connexion au serveur RDP
Gestionnaire de sessions et sessions utilisateur
Changement de disposition du clavier
Installer un environnement graphique
Nous allons prendre une machine virtuelle exécutant Ubuntu Server 18.04 LTS avec deux cœurs de traitement, quatre gigaoctets de RAM et un disque dur (HDD) de vingt gigaoctets. 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% lors de votre commande.
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 exigences de calcul relativement faibles.
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, ce qui n'est pas difficile à 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 localiser GNOME et KDE, le référentiel contient language-pack-gnome-ru et language-pack-kde-ru - vous en aurez besoin si vous comptez utiliser des programmes de ces environnements de bureau. Dans XFCE, les traductions sont installées avec les applications. Ensuite, vous pouvez installer des 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 nécessaire pour certaines applications:
# 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 reste à configurer le serveur RDP.
Installation et configuration du serveur RDP
Il existe un serveur Xrdp gratuit dans les référentiels Ubuntu, que nous utiliserons:
sudo apt-get install xrdp
Si tout s'est bien passé, le serveur devrait démarrer automatiquement:
sudo systemctl status xrdp
Le serveur Xrdp démarre en tant qu'utilisateur xrdp et prend le certificat /etc/ssl/private/ssl-cert-snakeoil.key par défaut, que vous pouvez remplacer par le vôtre. Pour lire le 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, tandis que 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 peut rester inchangé. La configuration est bien documentée et il existe des pages de manuel correspondantes dans le kit:
man xrdp.ini
man xrdp
Il ne reste plus qu'à éditer le script /etc/xrdp/startwm.sh, qui est exécuté lors de l'initialisation de la session utilisateur. Tout d'abord, faisons une copie de sauvegarde du script à partir du kit de 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 avez besoin d'un script similaire au suivant:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4
Remarque: il est préférable d'écrire le chemin complet des fichiers exécutables dans des scripts - c'est une bonne habitude. Rendons le script exécutable et la configuration du serveur Xrdp peut être considérée comme terminée:
sudo chmod 755 /etc/xrdp/startwm.sh
Nous redémarrons le serveur:
sudo systemctl restart xrdp
Configuration du pare-feu
Par défaut, Xrdp écoute sur le port TCP 3389 sur toutes les interfaces. Selon la configuration du serveur virtuel, vous devrez peut-être configurer le pare-feu Netfilter. Sous Linux, cela se fait généralement à l'aide de l'utilitaire iptables, mais sur Ubuntu, il est préférable d'utiliser ufw. Si l'adresse IP du client est connue, la configuration se fait avec la commande suivante:
sudo ufw allow from IP_Address to any port 3389
Autorisez les connexions depuis n'importe quelle adresse IP comme suit:
sudo ufw allow 3389
RDP prend en charge le chiffrement, mais c'est une mauvaise idée d'exposer le serveur Xrdp à partir de réseaux publics. 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 de l'ordinateur client. Nous avons utilisé une approche similaire dans l'article précédent pour le serveur VNC.
Connexion au 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
Ajoutons l'utilisateur au groupe sudo afin qu'il puisse résoudre les tâches liées à l'administration. S'il n'y a pas un tel besoin, 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 des services Bureau à distance Windows intégré. Si Xrdp écoute sur une interface externe, aucun geste supplémentaire n'est nécessaire. Il suffit de spécifier l'adresse IP, le nom d'utilisateur et le mot de passe du VPS dans les paramètres de connexion. Après la connexion, nous verrons quelque chose comme ceci:
Après la configuration initiale de l'environnement de bureau, nous obtiendrons un bureau à part entière. Comme vous pouvez le voir, il ne consomme pas autant de ressources, bien que tout dépendra des applications utilisées.
Si le serveur Xrdp n'écoute que localhost, le trafic sur l'ordinateur client devra être compressé 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
Après l'initialisation du tunnel, le client RDP ne se connectera plus au serveur distant, mais à l'hôte local.
Avec les appareils mobiles, c'est plus difficile: les clients SSH capables de soulever le tunnel devront être achetés, de plus, sous iOS et iPadOS, le travail de fond des applications tierces est difficile en raison d'une trop bonne optimisation énergétique. Sur l'iPhone et l'iPad, il ne fonctionnera pas pour élever le tunnel dans une application distincte - vous avez besoin d'une application combinée, qui elle-même est capable d'établir une connexion RDP via SSH. Comme, par exemple, Remoter Pro .
Gestionnaire de sessions et sessions utilisateurs
La capacité multi-utilisateur est implémentée directement dans le serveur Xrdp et ne nécessite pas de 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
sudo netstat -ap |grep xrdp
Le gestionnaire de session n'est généralement pas visible par les utilisateurs, car le login et le mot de passe spécifiés dans les paramètres du client lui sont transférés automatiquement. Si cela ne s'est pas produit ou si une erreur s'est produite lors de l'authentification, une fenêtre de connexion interactive apparaîtra à la place du bureau.
Le démarrage automatique du gestionnaire de session est enregistré 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 ne pouvez rien laisser ici, il vous suffit de désactiver la connexion root (AllowRootLogin = false). Pour chaque utilisateur connecté au système, un processus xrdp distinct est lancé: si vous vous déconnectez sans terminer la session, les processus utilisateur continueront de fonctionner 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]).
Changement de disposition du clavier
Avec un presse-papiers à deux faces, les problèmes ne se posent généralement pas, mais avec une disposition de clavier russe, vous devrez bricoler un peu (la langue russe doit déjà être installée ). Modifions les paramètres du clavier du serveur Xrdp:
sudo nano /etc/xrdp/xrdp_keyboard.ini
Les lignes suivantes doivent être ajoutées à 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 reste à enregistrer le fichier et à redémarrer Xrdp:
sudo systemctl restart xrdp
Comme vous pouvez le voir, il n'est pas difficile de configurer un serveur RDP sur un VPS Linux, et dans l' 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 X2Go utilisant un protocole NX 3 modifié. Nous en parlerons dans la prochaine publication.