ESSH : tableau Fleet avec consensus, hôtes divergents et sélecteur de thèmes
|

ESSH : piloter une flotte SSH depuis un TUI Rust qui voit les divergences

https://github.com/matthart1983/essh

📌 ESSH est un client SSH en Rust avec interface terminal, pensé pour les personnes qui administrent plusieurs machines. Il regroupe sessions, clés, transferts SFTP, port forwards et métriques hôte dans une même fenêtre, puis compare les serveurs entre eux pour signaler celui qui ne ressemble pas aux autres.

Le point de départ est familier : quelques serveurs web configurés presque pareil, des connexions réparties entre des onglets de terminal, et le jour où une machine se comporte différemment, une longue série de commandes à lancer à la main. ESSH propose une autre vue. On ouvre essh, on recherche un hôte, on se connecte, puis on passe à l’écran Fleet pour regarder le groupe plutôt que chaque serveur isolément.

Les hôtes sont lus directement depuis ~/.ssh/config, avec leurs IdentityFile, ProxyJump et règles Match. Il n’y a donc pas de nouvel inventaire à importer. essh connect deploy@web-01 ouvre une connexion directe, essh workspace open prod restaure un ensemble de sessions, et essh run web -- uptime diffuse une commande sur un groupe marqué. Dans le TUI, les onglets et les splits cohabitent avec leur propre scrollback et leur reconnexion.

La fonction la plus intéressante s’appelle Divergence. ESSH regroupe les machines en ensembles de pairs, collecte les mêmes informations sur chacune et calcule un consensus. Si trente-neuf serveurs ont le même noyau et qu’un seul possède un nginx.conf différent, l’écran Fleet nomme l’hôte et les facettes qui divergent. Les données impossibles à récupérer restent « uncollected », jamais transformées en faux accord. C’est beaucoup plus exploitable qu’une colonne de pastilles vertes.

Le reste couvre le quotidien d’une session distante. Un moniteur mesure CPU, mémoire, disque, réseau et processus en arrière-plan. Un navigateur à deux panneaux transfère des fichiers via SFTP. Les port forwards s’ajoutent, se consultent et se retirent sans interrompre la session. Les audits sont écrits en JSON et les sessions peuvent être enregistrées en asciicast pour être rejouées plus tard. Huit thèmes sont disponibles, dont dark, terminal, light, solarized, dracula et nord.

La philosophie de NetWatch Labs est cohérente : un binaire Rust statique, aucun daemon, aucune télémétrie, une interface conçue pour tmux sur une fenêtre étroite plutôt que pour une capture marketing. ESSH reste compatible avec les habitudes du shell : les combinaisons Ctrl passent, Ctrl+D garde son sens, et la touche préfixe permet de diviser ou fermer une session sans voler Alt+f à readline.

Il y a une vraie partie sécurité à ne pas ignorer. Les clés d’hôte sont vérifiées et mises en cache avec une politique TOFU configurable (strict, prompt, auto), et les chiffrements ou algorithmes KEX peuvent être restreints. Le projet est MIT, fonctionne sur macOS et Linux, et s’installe avec cargo install essh ou via les binaires de release. La configuration et les journaux restent dans ~/.essh/.

Je trouve la fonction de divergence plus convaincante que l’accumulation de raccourcis. ESSH ne se contente pas de rendre SSH plus joli : il répond à la question pénible « lequel de mes serveurs est différent, et sur quel point ? ». Pour quelques machines, le SSH classique restera plus direct. Dès qu’une flotte commence à se ressembler sans être parfaitement identique, cette vue de groupe mérite un essai.

Points clés :

  • 🖥️ Sessions SSH en onglets et splits, avec reconnexion et scrollback
  • 🔎 Comparaison de flotte : hôtes divergents et facettes précises
  • 📈 Moniteur CPU, mémoire, disque, réseau et processus
  • 📁 Transferts SFTP et port forwards sans quitter le TUI
  • 🎥 Audit JSON et enregistrement asciicast pour rejouer les sessions
  • 🦀 Binaire Rust statique, MIT, sans daemon ni télémétrie

Sources :

Publications similaires

Laisser un commentaire