
essh v0.3.2
Client SSH amélioré avec TUI — gérer les connexions, les clés et les sessions
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
Un client SSH en Rust pur avec une interface TUI dense, style Netwatch. Multi-sessions, métriques hôtes en direct et divergence de parc — sans quitter le terminal.

Installation
cargo install essh
Ou récupérez un binaire pour macOS ou Linux, arm64 ou x86_64, depuis Releases.
Depuis les sources :
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
Démarrage
essh # launcher: type to search, Enter to connect
essh connect deploy@web-01 # straight to a host
essh workspace open prod # restore a saved set of sessions
essh run web -- uptime # fan a command across a tagged group
Les hôtes proviennent de ~/.ssh/config — y compris IdentityFile, ProxyJump et Match — il n'y a donc rien à importer avant de commencer.
Raccourcis clavier
Tout ce qui est courant se fait en une pression de touche. Le shell conserve toutes les combinaisons Ctrl, donc Ctrl+D signifie toujours EOF et Ctrl+C interrompt toujours.
F1 aide | F2 moniteur | F3 fichiers | F4 redirections de ports |
F5 mini moniteur | F6 détacher | F7/F8 session précédente/suivante | F9 nouvelle session |
F10 menu des commandes |
Pour tout le reste, appuyez sur Ctrl+A, relâchez, puis la touche — s diviser, w fermer, t thème, 1–9 aller à la session, [/] redimensionner. La barre en bas d'une session liste les touches actives à ce moment, il n'y a donc rien à mémoriser. Changez le préfixe avec prefix_key sous [session].
Les combinaisons Option/Alt fonctionnent également lorsque votre terminal les envoie en tant que Meta, mais les touches de fonction ne nécessitent aucune configuration et se comportent de la même manière sur les deux plateformes.
Fonctionnalités
| Multi-sessions | Onglets et divisions dans une seule fenêtre, avec défilement arrière et reconnexion par session. |
| Moniteur d'hôtes en direct | CPU, mémoire, disque, réseau et principaux processus, échantillonnés en arrière-plan pour que la vue soit prête à son ouverture. Aucun agent — de simples canaux d'exécution SSH. |
| Divergence | Compare chaque hôte à son ensemble de pairs et vous indique quel hôte diffère, sur quel aspect, et pourquoi. |
| Transfert de fichiers | Explorateur local/distant à deux volets via SFTP. |
| Redirection de ports | Ajouter, inspecter et supprimer des redirections sans interrompre la session. |
| Audit et relecture | Journal d'audit JSON structuré ; les sessions sont enregistrées en asciicast pour relecture. |
Divergence
Quarante serveurs web, trente-neuf en bon état, et un avec un noyau différent ou un nginx.conf modifié à la main. Une colonne de points verts ne peut structurellement pas vous montrer cela.
ESSH regroupe les hôtes en ensembles de pairs par tag, collecte les mêmes informations sur chacun, et note chaque hôte par rapport au consensus du groupe :
100.0% of 16 facet-checks agree
0 facets diverge across 0 hosts.
2 hosts have never been probed, so their facets are unknown rather than in agreement.
L'écran Fleet nomme la valeur aberrante et les aspects derrière l'affirmation, afin que le verdict puisse être vérifié plutôt qu'affirmé. Les informations qu'il ne peut pas collecter sont signalées comme non collectées — jamais comme un accord.
Configuration
L'état est stocké dans ~/.essh/ : config.toml, cache.db, audit.log, sessions/, recordings/, known_cas/.
essh config init # write a default config
essh config edit # open it in $EDITOR
essh config resolve web-01 # show how ssh_config resolves a host
Les clés d'hôte sont vérifiées et mises en cache, avec une politique TOFU configurable (strict, prompt, auto). Les chiffrements et les algorithmes KEX peuvent être restreints.
Référence complète de configuration et d'architecture : SPEC.md.
CLI
essh hosts list | add | remove | import | health
essh keys list | add | remove
essh workspace list | open | save | show | remove
essh session list | replay <id>
essh diag <session-id> # diagnostics for a past session
essh why <host> # explain why a host will not connect
essh audit tail --lines 20
essh bench # published performance numbers
Développement
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
La CI exécute les trois à chaque push.
tests/tui_harness.rs pilote le vrai binaire sur un PTY et vérifie un écran terminal analysé avec une échéance, car les échecs qui comptent dans une TUI sont l'absence d'une frame plutôt qu'une frame erronée. Les tests qui nécessitent SSH s'ignorent eux-mêmes lorsqu'aucun hôte n'est joignable.
Contribution
Forkez, créez une branche, apportez la modification, lancez les trois vérifications ci-dessus, ouvrez une PR.
Licence
MIT. Voir LICENSE.