En bon technophile, je laisse mon ordinateur allumé à la maison, et j'y accède à distance depuis le boulot et ailleurs.

J'ai commencé par utiliser LogMeIn, mais ils ont laissé tomber leur offre gratuite et sont devenus super chers... 😒

J'ai longtemps utilisé Teamviewer, mais ils sont devenus plus regardants et m'ont restreint l'usage me soupçonnant d'un usage commercial... En me proposant un abonnement super cher. 🙄

Après j'ai utilisé RemotePC. Honnêtement, c'est le moins bien des 3. Le logiciel n'est pas vraiment parfait, et l'expérience générale est moins satisfaisante que Teamviewer par exemple. Mais c'est pas cher. Jusqu'à 10 ordinateurs contrôlés pour 6,95 $ la première année (69,50 $ les suivantes). Comparés aux 350+ € des autres, c'est une bouchée de pain, et les imperfections sont tout de suite plus vivables. 😅

J'utilise Teamviewer au boulot. Il y a largement plus de 10 machines, et c'est un produit simple qui marche bien. Mais en ces temps de confinement, on a besoin de plus de prise de contrôle à distance. Teamviewer nous prend 800+ € par an pour une machine contrôlée à la fois (ils appellent ça un canal). Si on veut un canal supplémentaire, c'est 400 € de plus... 😑

Donc là on se relaie sur l'assistance technique, en attendant que le collègue arrête sa session. Un peu galère. J'ai donc cherché une alternative. Gratuite tant qu'on y est, on est quand même en 2020, on trouve tout en open source, pourquoi pas un contrôle à distance qui passe les pare-feux ?

Et j'en ai trouvé un : MeshCentral. 😁 C'est un projet issu d'Intel, pour promouvoir je pense la technologie AMT.

MeshCentral est en fait plus qu'un simple outil de prise de contrôle à distance. C'est une plate-forme de gestion de parc informatique, qui donne des infos sur les machines recensées et des accès bureau à distance, terminal, système de fichiers, etc.

Et c'est simple comme chou à installer, en plus ! 🤩 Je repompe largement la doc sur MeshCentral, ça me permet d'avoir un pense-bête si je dois le refaire.

On va avoir besoin d'un ordinateur, à peu près n'importe quoi qui fait tourner un Linux convenablement, même un Raspberry Pi. 😉 On peut utiliser aussi Windows, mais j'avais dit gratuit. 😅 Le site de MeshCentral propose un installeur tout fait, donc si ça vous tente...

Un Linux de votre choix, en ce moment j'ai un Ubuntu Core sur mon RPi, donc je vais utiliser celui-là pour la démo. 😅

Et c'est parti ! Il y a des milliards de tutos pour installer les Linux, on passe. 😁

On a besoin de Node.js et npm :

apt install nodejs
apt install npm

On va autoriser Node.js à utiliser les ports privilégiés (si votre node n'est pas dans /usr/bin, changez le chemin) :

sudo setcap cap_net_bind_service=+ep /usr/bin/node

MeshCentral utilise une base de données pour gérer les machines enregistrées. De base c'est un bête fichier, mais si vous pensez avoir beaucoup d'entrées, il vaut mieux passer à une base plus robuste. MeshCentral recommande MongoDB et son fichier de conf est prévu pour. 😉 Après si c'est pour les 5 ordis de la famille, c'est peut-être pas la peine.

Si vous choisissez d'utiliser MongoDB, il faut l'installer :

apt install mongodb

J'avais dit que Debian était très conservateur dans les choix de versions et de paquets. Là ça nous saute à la gueule, le repository Debian ne connaît pas MongoDB... Heureusement MongoDB a une page explicative pour y remédier. Et Ubuntu n'inclut plus MongoDB dans son repository pour cause d'incompatibilité de licence. MongoDB a aussi un manuel pour Ubuntu.

On va commencer à créer un utilisateur pour MeshCentral :

useradd -r -s /sbin/nologin meshcentral

On va créer le répertoire d'installation de MeshCentral, l'installer et corriger les droits sur le répertoire :

mkdir /opt/meshcentral
cd /opt/meshcentral
npm install meshcentral
chown -R meshcentral:meshcentral /opt/meshcentral

Et c'est bon. C'est installé. 😮

Premier lancement :

node ./node_modules/meshcentral

Si votre ordinateur a un FDQN résolvable :

node ./node_modules/meshcentral --cert <votre nom de domaine>

Et MeshCentral dit quelque chose comme ça :

MeshCentral HTTP redirection web server running on port 80.
Generating certificates, may take a few minutes...
Generating root certificate...
Generating HTTPS certificate...
Generating MeshAgent certificate...
Generating Intel AMT MPS certificate...
Generating Intel AMT console certificate...
MeshCentral Intel(R) AMT server running on top.serveur.com:4433.
MeshCentral HTTPS web server running on top.serveur.com:443.
Server has no users, next new account will be site administrator.

Notez la dernière ligne. Le système ne créé pas d'utilisateur par défaut, le premier inscrit est administrateur ! Si votre installation est accessible depuis internet, ne perdez pas de temps.

Connectez-vous à l'adresse de votre machine, et créez votre compte. Vous avez une installation MeshCentral opérationnelle. Bravo ! 🎉

On va maintenant éditer le fichier de conf (meshcentral-data/config.json), maintenant qu'ils sont créés. Ce dont on a besoin tout de suite :

"Cert" : "<nom de domaine>", : Pour spécifier le nom du serveur. Sans ce paramètre, MeshCentral va s'exécuter en mode réseau local et va dire aux agents de chercher en local.

"MongoDb": "mongodb://127.0.0.1:27017", : Pour utiliser MongoDB. On relance (avec la même commande qu'au-dessus), et MongoDB est correctement alimenté.

 Mais fini de rigoler, on va créer une unité systemd pour MeshCentral. Arrêtez-le par Ctrl-C, et créez le fichier /etc/systemd/system/meshcentral.service :

[Unit]
Description=MeshCentral Server

[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
WorkingDirectory=/opt/meshcentral
Environment=NODE_ENV=production
User=meshcentral
Group=meshcentral
Restart=always
# Restart service after 10 seconds if node service crashes
RestartSec=10
# Set port permissions capability
AmbientCapabilities=cap_net_bind_service

[Install]
WantedBy=multi-user.target

Comme toujours, adaptez les chemins et utilisateurs suivant votre installation, vous êtes grands, je vous laisse faire.

On active et on relance MeshCentral par systemd :

systemctl enable meshcentral.service
sudo systemctl start meshcentral.service

Notre serveur est maintenant opérationnel !

Reconnectons-nous, et on tombe sur l'écran Mes appareils, qui présente les groupes d'ordinateurs disponibles, ainsi que le statut des ordinateurs membres :

cerebro 2

MeshCentral - Mes Appareils

Là je triche un peu, j'ai déjà créé un groupe et ajouté des ordinateurs, cliquez sur Créer un groupe pour... créer un groupe. 😅

Chaque groupe présente une série de liens :

  • Ajouter CIRA : permet d'ajouter un client Intel AMT. MeshCentral a été développé à l'origine par Intel pour gérer les appareils Intel Active Management Technology, et peut contrôler de tels appareils. Peu d'utilité pour moi, aucun de mes ordinateurs ne supporte AMT.
  • Ajouter un agent : permet le téléchargement des clients MeshCentral pour les OS supportés, Windows, Linux et Mac OS X. C'est ça qui nous intéresse.
  • Inviter : génère un lien pour télécharger le client MeshCentral. Il est possible d'en restreindre la validité dans le temps.

Téléchargez le client et lancez-le sur un ordinateur que vous voulez contrôler. L'exécutable n'est pas signé, passez outre les alertes au besoin.

mcclient

Mesh Agent

C'est tout simple. Install/Update permet d'installer l'agent (requiert droits administrateur), Uninstall désinstalle l'agent, Connect lance une connexion one shot.

Une fois connecté, l'agent remonte immédiatement dans Mes appareils. Il est temps de s'en occuper !

Cliquez sur un ordinateur, en statut Alimenté (online), sinon on va pas loin. 😆 On a lors les options de gestion :

  • Général : présente les propriétés de l'ordinateur dans MeshCentral, ainsi que son historique d'activité (temps de mise sous tension). Cet affichage permet aussi de déplacer l'ordinateur dans un autre groupe, ou de le supprimer de MeshCentral.
  • Bureau : c'est la fenêtre de contrôle à distance graphique. On lance la session en cliquant sur Se connecter. Les boutons autour de l'affichage distant permettent le réglage de l'affichage et l'envoi de combinaison de touches spéciales.
  • Terminal : lance un ligne de commande avec les droits de l'utilisateur connecté. Dans le cas du client installé, c'est l'utilisateur System de Windows (full droits/full power !).
  • Dossiers : permet de parcourir le système de fichiers de l'ordinateur distant.
  • Evenements : historique des actions effectuées sur le client.
  • Détails : diverses infos (assez succinctes) concernant l'ordinateur.
  • Terminal : affiche les messages éventuels du client MeshCentral, et permet la gestion de celui-ci (installation, désinstallation, mise à jour).

Regardez-moi ça si c'est pas joli, la vue Bureau

cerebro 4

Bureau

C'est basé sur RDP, c'est réactif et complet.

Enjoy ! 😉

Petite note pour les clients FreeBSD (puisé du GitHub de MeshCentral) :

  1. Vous aurez besoin de monter procfs, qui n'est pas monté par défaut sur FreeBSD. Ajoutez cette ligne à /etc/fstab :
     proc /proc procfs rw 0 0
  2. Si vous ne souhaitez pas rédemarrer, vous pouvez monter manuellement avec la commande suivante :
     mount -t procfs proc /proc