Installation du serveur et du client Rustdesk

Open source Remote desktop Télé-assistance Contrôle à distance Réseau Rustdesk

Qui n'a pas rêvé d'avoir une alternative libre à Teamviewer ou AnyDesk et sur laquelle on a complètement la main ? Et bien c'est ce que propose le logiciel Rustdesk. Nous allons voir comment installer le serveur et le client dans le cadre d'un PoC.

Update 21/07/2023 : Vous trouverez sur le lien suivant les dernières évolutions de Rustdesk https://blog.raspot.in/fr/blog/rustdesk-dernieres-evolutions

Rustdesk est un logiciel libre de contrôle à distance édité sous la licence GPL-3.0. Le client s'utilise aussi simplement que Teamviewer ou Anydesk, point important si on envisage de migrer les utilisateurs sur cet outil de télé-assistance. Rustdesk propose également d'autohéberger son propre serveur ce qui permet de renforcer la vie privée et d'avoir la main complète sur l'application. Le projet est certes jeune (début 2021) mais il est très prometteur puisqu'on retrouve déjà les principales fonctionnalités proposées par ses concurrents propriétaires. D'un point de vue sécurité, Rustdesk est livré avec un chiffrement de bout en bout. Enfin le client est multiplate-forme puisqu'il est installable sur les principaux OS Desktop (GNU/Linux, WIndows, Macosx) ainsi que sur Android et iOS.

Pour monter le serveur, j'ai utilisé une VM Debian 11 virtualisée sous Proxmox :

  • CPU : 4 cores
  • RAM : 4096 Mo
  • DD : 50 Go

Par la suite, j'utiliserai Docker sur cette VM pour faire tourner le serveur Rustdesk.

Si vous souhaitez le rendre accessible depuis l'externe (c'est un peu le but hein), voici les ports à ouvrir :

  • TCP : 21115, 21116, 21117, 21118, 21119
  • UDP : 21116

Vous pouvez également créer un enregistrement DNS pointant vers votre serveur mais l'utilisation de l'IP fonctionne également.

Dans le cadre de ce test, j'ai utilisé deux réseaux privés.

Le serveur Rustdesk et des postes hébergés sur le réseau privé de mon domicile :

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2011-25-15

Des poste hébergés sur un réseau privé externe :

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2011-28-33

Le serveur fournit deux applications à lancer :

  • hbbs : Le serveur RustDesk ID/Rendezvous
  • hbbr : Le serveur relais RustDesk

Le serveur relais est utilisé en cas d'échec de connexion directe au client à prendre à distance. Selon l'éditeur, le trafic d'une connexion relais est compris entre 30k et 3M/s ( pour une résolution d'écran de 1920x1080). Ces deux services peuvent tourner sur le même serveur ou sur deux serveurs différents. Dans le cadre de ce POC, nous retiendrons la première solution.

Pour en revenir aux ports, voici le rôle de chacun :

  • hbbs écoute sur 21115(tcp) et 21116(tcp/udp), 21118(tcp)
  • hbbr écoute sur 21117(tcp), 21119(tcp).

Selon l'éditeur : le port 21115/TCP est utilisé pour le test de type NAT, 21116/UDP est utilisé pour l'enregistrement d'ID et le service heartbeat. 21116/TCP est utilisé pour le TCP hole punching et le service de connexion, 21117 est utilisé pour les services de relais.

Les ports 21118 et 21119 sont utilisés pour prendre en charge les clients Web. Si vous n'avez pas besoin de la prise en charge du client Web (21118, 21119), les ports correspondants peuvent être désactivés. Et oui, on peut même prendre la main depuis un client web disponible en version beta ici : https://web.rustdesk.com

Passons à l'installation de nos deux services :

mkdir /srv/rustdesk
cd /srv/rustdesk
docker run --name hbbs -d -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbs
docker run --name hbbr -d -p 21117:21117 -p 21119:21119 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbr

Et voilà ! Le serveur est prêt à recevoir des connexions.

Dans le répertoire de lancement des conteneurs docker, vous trouverez plusieurs fichiers dont la clé publique id_ed25519.pub. Copiez le contenu de cette clé et conservez-le car nous en aurons besoin plus tard pour le client.

Rendez-vous sur https://rustdesk.com/ et téléchargez le client correspondant pour vos deux postes.

IMPORTANT : pour les postes GNU/Linux, le client n'est malheureusement pas encore compatible avec Wayland. Il vous faudra donc ouvrir une session X11.

Configuration du client sur les deux postes.

On déclare notre serveur et la clé publique précédemment copiée.

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2010-16-47

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2010-17-16

C'est tout :)

Pour le client Windows, on peut embarquer la configuration dans le .exe ce qui peut être utile lors d'une installation d'un poste en évitant de perdre du temps pour expliquer au client comment configurer le logiciel.

Pour cela, il suffit de renommer l'exécutable rustdesk.exe en rustdesk-host=IP_SERVEUR,key=CLE_PUBLIQUE.exe. Pour contrôler si les paramètres ont bien été pris en compte, il vous suffit de cliquer sur "A propos du logiciel" et vous verrez alors un écran avec les options passées :

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2011-12-37

Le client fonctionne aussi sur Windows 11 et la version serveur de Windows (testé sur Windows Server 2016). Dans le cas du serveur Windows, le client se lance par défaut en simple exécution mais il est possible de l'installer :

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-26%2011-11-48

Tout comme les autres concurrents propriétaires, il vous suffit ensuite de saisir l'ID et le mot de passe du client distant.

Premières fonctionnalités testées :

  • Prise en main à distance : OK (demande une autorisation à la cible ou bien possibilité de saisir le mot de passe)
  • Transfert de fichiers : OK (demande une autorisation à la cible ou bien possibilité de saisir le mot de passe même si déjà connecté) / Vitesse de transfert 2 Mo/s par le biais du relais malgré des accès Internet pas dégueulasse des deux côtés. Est-ce un bridage voulu pour éviter une saturation de la BP ?
  • Changement d'écrans : OK
  • Tchat : OK

Fonctionnalité à tester

Le carnet d'adresse : option disponible dans le client mais certainement en cours de dev sur le serveur car quid des utilisateurs pour le login/password et lorsque on tente une "fausse" authentification, le client interroge le serveur sur le port 21114 (en HTTP) qui n'est pas documenté à l'heure où j'écris ces lignes.

Sur le serveur faisant tourner les conteneurs hbbs et hbbr :

docker logs hbbs -f
docker logs hbbr -f

Au départ, j'avais eu peur de prendre feu pour un logiciel qui pouvait paraître prometteur sur papier mais décevant à l'usage. Ouf ! Le logiciel bien que jeune est clairement opérationnel en remplissant très bien les fonctions de base. Certes il reste des progrès à faire pour concurrencer Teamviewer et la documentation est très succincte sur la partie serveur, mais pour un usage personnel cela suffit amplement. Un logiciel à suivre...

Pour comprendre comment fonctionne techniquement Rustdesk : https://github.com/rustdesk/rustdesk/issues/594#issuecomment-1138342668

Article précédent Article suivant