Comment se connecter en RDP à Debian 10 avec xRDP ?
Sommaire
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
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 :
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
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.
Bonjour,
Merci pour ce tuto extrêmement efficace. Comment l’ai-je raté avant ? Ha… oui il est relativement récent.
Pas une erreur tout fonctionne parfaitement et la clarté du post nous permet de comprendre toutes les manip pas à pas donc de peaufiner au besoin.
Félicitation
Merci Matthieu 🙂
Merci pour cet article. Est ce fonctionnel dans un environnement serveur (plusieurs personnes se connecte en même temps) ?
merci encore !
Slt Florian,
Je te suit depuis un bon moment. Et ton travail et très bien structuré. J’imagine le boulot 😅.
Par rapport à ton tuto, malheureusement il semblerait que ça ne fonctionne plus sous une debian 11.
Pour info, je suis sous debian 11 dernière version et gnome 3. Et j’ai une fermeture de fenêtre xorg juste après avoir rentré le user et mdp a la connection. Et pas de message.
Pas trouvé de solution sur internet pour debian 11 avec xrdp.
En as tu une ?
Cordialement
Bonjour !
Il faut malheureusement installer « xfce4 » et modifier le fichier startwm.sh.
Il faut mettre un # devant ces deux lignes :
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /bin/sh /etc/X11/Xsession
et ajouter :
startxfce4
Je n’ai pas encore trouvé pour que cela fonctionne avec l’environnement gnome que je préfère