Comment se connecter en RDP à Debian 10 avec xRDP ?

I. Présentation

Dans ce tutoriel, nous allons voir comment installer xRDP sur Debian pour se connecter en RDP depuis Windows sur notre machine Linux. La connexion sera possible depuis Windows, mais également une autre machine sous Linux, sous macOS ou sous Android : il suffit d'un client RDP.

Le protocole RDP (Remote Desktop Protocol) sert à se connecter à distance sur une machine avec un client Bureau à distance. Quant à xRDP, il s'agit d'une implémentation open source du protocole RDP de Windows.

Au niveau de la machine Linux, il y a un prérequis : vous devez avoir un environnement de bureau installé. Que ce soit GNOME, MATE, XFCE, etc... Au choix. Par exemple, pour installer XCFE Desktop sur Debian 10, il faudra exécuter ces commandes :

apt update -y
apt install task-xfce-desktop -y

Si vous avez une machine Debian 10 avec un environnement de bureau installé, vous pouvez passer à la suite.

II. Installation de xRDP sous Debian 10

Ouvrez un Terminal sur la machine Debian et commencez par mettre à jour les paquets (le préfixe sudo est nécessaire si vous n'utilisez pas le compte "root").

sudo apt update

Ensuite, installez le paquet xRDP qui est dans les dépôts par défaut :

sudo apt install xrdp -y

Suite à l'installation, on peut s'assurer que le service est bien démarré :

sudo systemctl status xrdp

Malheureusement, si l'on regarde le détail du statut, on constate qu'il y a une erreur.

Nous devons ajouter l'utilisateur "xrdp", associé au serveur xRDP, au groupe ssl-cert de notre machine Debian. En fait, xRDP s'appuie sur le fichier "ssl-cert-snakeoil.key" pour la partie certificat de la connexion RDP, mais ce fichier est accessible uniquement aux membres du groupe "ssl-cert".

sudo adduser xrdp ssl-cert

Redémarrez le service xRDP :

sudo systemctl restart xrdp

Enfin, activez le démarrage automatique du service xRDP :

sudo systemctl enable xrdp

Notre serveur xRDP est prêt à l'emploi, passons à la configuration.

Note : si vous utilisez un firewall sur votre machine Debian, il faut penser à ouvrir le port 3389 qui est le port par défaut du protocole RDP. Par exemple pour UFW, voici la commande à exécuter : sudo ufw allow 3389

III. Configurer xRDP sous Debian 10

Sans apporter de modifications à la configuration, on pourrait déjà se connecter sur notre machine Linux à distance. Toutefois, il me semble important de vous présenter les fichiers de configuration du serveur xRDP.

Il y a un premier de configuration ici :

/etc/xrdp/xrdp.ini
Fichier de configuration xRDP
Fichier de configuration xRDP

Dans ce fichier, on pourrait modifier le port d'écoute du serveur xRDP pour ne pas utiliser 3389. Cela se configure au niveau de la directive suivante qu'il suffit de modifier :

port=3389

Ce fichier permet également de gérer l'apparence de l'écran de connexion (message, couleurs, image de fond, etc.).

Il y a un second fichier de configuration, que voici :

/etc/xrdp/sesman.ini

Il contient de nombreux paramètres. Il va permettre d'empêcher l'utilisateur "root" de se connecter en RDP :

# Définir sur "false" pour empêcher le compte "root" de se connecter en RDP (par défaut, c'est autorisé)
AllowRootLogin=false

Dans la configuration de xRDP, on peut aussi autoriser seulement les utilisateurs d'un groupe spécifique, par défaut "tsusers", à se connecter en RDP. Le problème, c'est que ce groupe n'est pas créé et que tout le monde peut se connecter.

Pour déclarer un groupe, il faut renseigner cette directive :

TerminalServerUsers=tsusers

Au passage, il faut basculer sur "true" la directive ci-dessous pour imposer la vérification des membres du groupe pour gérer la connexion.

AlwaysGroupCheck=true

On obtient le fichier suivant :

xRDP - Exemple sesman.ini

Il faut penser à créer votre groupe si ce n'est pas déjà fait. On peut aussi créer un groupe en prenant le nom suggéré par défaut :

sudo groupadd tsusers

Ensuite, on va ajouter un utilisateur au groupe :

sudo adduser florian tsusers

Enfin, pensez à redémarrer le service xRDP pour que les changements soient pris en compte. Il ne reste plus qu'à tester. Si un utilisateur n'est pas autorisé à se connecter, le gestionnaire de sessions lui renverra le message suivant :

Pour gérer les sessions, il y a d'autres paramètres à connaître :

# Nombre de sessions RDP maximales, en même temps
MaxSessions=10

# Tuer une session déconnectée après X minutes ou secondes
KillDisconnected=true

# Délai avant de tuer une session déconnectée. Si "0" = 60 secondes
DisconnectedTimeLimite=0

Les événements sont loggués dans deux fichiers de log :

/var/log/xrdp.log
/var/log/xrdp-sesman.log

Passons maintenant aux tests.

IV. Se connecter à Debian 10 depuis Windows

Depuis la machine Windows, il suffit d'ouvrir le client Bureau à distance, de saisir l'adresse IP de l'hôte Linux et de se connecter. Comme c'est la première connexion, il faudra accepter le certificat.

On arrive sur une fenêtre de connexion, où l'on renseigne un identifiant et un mot de passe.

Et voilà, on est connecté sur la machine Debian en RDP !

V. Résoudre les erreurs de connexion xRDP

Après avoir établi une connexion, si vous obtenez un écran noir ou un écran bleu (de la couleur du fond du prompt RDP) : pas de panique ! En fait, cela se produit si vous utilisez la même session (même utilisateur) en direct sur le serveur et en connexion RDP.

Vous devez fermer la session en local sur la machine et relancer la connexion RDP.  Ensuite, cela va fonctionner.

Il y a de fortes chances pour que deux prompts s'affichent suite à la connexion pour vous demander le mot de passe Administrateur :

  • Il est nécessaire de s'authentifier pour créer un périphérique avec gestion de couleurs
  • Authentication is required to refresh the system repositories

Authentication is required to refresh the system repositories

Cela se produit à cause du composant PolKit qui gère les interactions d'un utilisateur standard avec les applications. Nous allons créer une politique personnalisée pour qu'il nous laisse tranquilles quand on se connecte en RDP.

Créez le fichier suivant :

sudo nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

Ajoutez le contenu ci-dessous pour créer la règle :

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
 action.id == "org.freedesktop.color-manager.create-profile" ||
 action.id == "org.freedesktop.color-manager.delete-device" ||
 action.id == "org.freedesktop.color-manager.delete-profile" ||
 action.id == "org.freedesktop.color-manager.modify-device" ||
 action.id == "org.freedesktop.color-manager.modify-profile" ||
 action.id == "org.freedesktop.packagekit.system-sources-refresh" || action.id == "org.freedesktop.packagekit.system-network-proxy-configure") &&
 subject.isInGroup("{users}")) {
 return polkit.Result.YES;
 }
});

Sans même redémarrer le service xRDP ou un autre service, vous pouvez retenter une connexion RDP : cette fois-ci vous allez accéder au bureau Linux sans être embêté ! 😉

Nous venons de voir dans ce tutoriel comment installer et configurer xRDP sous Debian 10. C'est assez simple, mais il faut penser à apporter quelques réglages pour que ce soit pleinement opérationnel.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau et cofondateur d'IT-Connect. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3208 posts and counting.See all posts by florian

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.