On se fait un TeamViewer ?"
C'est la question de nos clients, qui arrive assez souvent, lorsque nous avons besoin de prendre la main, à distance, sur un poste client.
Chez AukFood, notre philosophie est de n'utiliser que de l'open-source. On ne va pas se mentir, TeamViewer fonctionne quand même sacrément bien, il fait ce qu'on lui demande, mais... C'est propriétaire !
Alors qu'est-ce qu'on fait ? Nous avions étudié le fonctionnement de Tactical RMM (voir l'article ici), mais ce dernier peut être assez lourd lorsque c'est juste pour un accès ponctuel. Dans le cadre de Tactical RMM, il vous faut installer un agent, l'ajouter côté serveur, etc... Il nous faut une méthode plus simple et plus rapide.
1. Présentation de RustDesk
RustDesk est écrit en Rust, et présente le même fonctionnement que TeamViewer. En effet, pour se connecter à une machine distante, il faut disposer de son ID et de son mot de passe.
Voici le fonctionnement, finalement très simple. Chaque ordinateur (le prestataire et le client) doit disposer du logiciel "RustDesk", compatible Windows, macOS, Linux, Android, iOS.
Pour que la connexion soit établie, il faut une machine qui héberge les fonctionnalités suivantes :
- hbbs (signaling server)
- hbbr (relay server)
Il existe des serveurs publics, hébergeant ces deux composants. Ils sont maintenus par l'équipe de RustDesk, et sont au nombre de trois. Le premier à Séoul, le deuxième à Singapour et le dernier à Dallas.
Cependant, il est possible d'autohéberger son propre serveur, pour une meilleure sécurité.
Voici ci-dessous, un schéma plus détaillé, issu du GitHub du projet :
2. Installation de RustDesk (serveurs hbbs et hbbr)
Il existe deux modes d'installation (au choix) : en mode conteneur, ou en mode autonome. Dans cet article, nous nous intéresserons à l'installation via Docker.
Attention, il vous faudra ouvrir les ports suivants :
- TCP : de 21115 à 21119
- UDP : 21116
Cette méthode implique que vous ayez Docker déjà installé sur votre machine. Il y aura au total deux conteneurs : hbbs et hbbr.
Tout d'abord, créer un dossier pour ce projet :
mkdir rustdesk
cd rustdesk/
Télécharger l'image :
docker image pull rustdesk/rustdesk-server
Puis lancer le conteneur hbbs
:
docker run -d --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd
:/root -it --net=host --rm rustdesk/rustdesk-server hbbs -r
En prenant le soin de remplacer relay-server-ip
par l'IP publique du serveur, et le port 21117.
Lancer le conteneur hbbr
:
docker run -d --name hbbr -p 21117:21117 -p 21119:21119 -v pwd
:/root -it --net=host --rm rustdesk/rustdesk-server hbbr
Vérifier le bon fonctionnement des deux conteneurs :
root@server:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e415ce61397 rustdesk/rustdesk-server "hbbr" About a minute ago Up About a minute hbbr
80453ef4b014 rustdesk/rustdesk-server "hbbs -r 1.2.3…" 4 minutes ago Up 4 minutes hbbs
Tout est up, c'est impeccable. Tester depuis une autre machine que les ports sont bien ouverts, avec un nmap
par exemple :
clement@MacBook-Pro ~ % nmap -p 21115,21116,21117,21118,21119
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-08 11:52 CEST
Host is up (0.013s latency).
PORT STATE SERVICE
21115/tcp open unknown
21116/tcp open unknown
21117/tcp open unknown
21118/tcp open unknown
21119/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
L'installation en mode conteneur est terminée.
3. Configuration du client RustDesk pour pointer sur un serveur tiers
Une fois que les deux postes ont installé RustDesk (télécharger ici : https://github.com/rustdesk/rustdesk/releases), il faut le configurer pour rediriger le trafic vers notre instance autohébergée, et non sur l'un des 3 serveurs publics.
⚠️ Configuration à faire sur les deux postes ⚠️
Pour cela, commencer par récupérer la clé publique de RustDesk :
cat rustdesk/id_ed25519.pub
C'est une étape facultative, mais celle-ci permet de chiffrer la connexion.
Cliquer sur les 3 points (voir entouré en rouge), puis sélectionner "ID / Serveur Relais".
À la ligne Serveur ID
, renseigner l'IP publique du serveur, suivie du port 21116 (par défaut). Puis à la ligne Key
, le contenu de la clé publique (voir ci-dessus).
Une fois cela fait sur chaque poste, confirmer les changements.
4. Conclusion
Vous pouvez lancer une connexion, cela fonctionne comme prévu, en passant par votre serveur auto-hébergé.
En conclusion, c'est une solution qui fonctionne, simple à installer, et qui fait ce qu'on lui demande. C'est un concurrent sérieux à TeamViewer à notre sens.[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]