Retour aux mises à jour
New releaseAug 22, 2026

essh v0.3.2

Client SSH amélioré avec TUI — gérer les connexions, les clés et les sessions

Partager

                         ███████╗███████╗███████╗██╗  ██╗
                         ██╔════╝██╔════╝██╔════╝██║  ██║
                         █████╗  ███████╗███████╗███████║
                         ██╔══╝  ╚════██║╚════██║██╔══██║
                         ███████╗███████║███████║██║  ██║
                         ╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝
                           Enhanced SSH for people with fleets

crates.io CI License: MIT macOS Linux

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.

ESSH Demo

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 aideF2 moniteurF3 fichiersF4 redirections de ports
F5 mini moniteurF6 détacherF7/F8 session précédente/suivanteF9 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, 19 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-sessionsOnglets et divisions dans une seule fenêtre, avec défilement arrière et reconnexion par session.
Moniteur d'hôtes en directCPU, 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.
DivergenceCompare chaque hôte à son ensemble de pairs et vous indique quel hôte diffère, sur quel aspect, et pourquoi.
Transfert de fichiersExplorateur local/distant à deux volets via SFTP.
Redirection de portsAjouter, inspecter et supprimer des redirections sans interrompre la session.
Audit et relectureJournal 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.

Catégories