
Client SSH potenziato con TUI — gestisci connessioni, chiavi e sessioni
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
Un client SSH in puro Rust con una TUI compatta in stile Netwatch. Sessioni multiple, metriche live degli host e divergenza a livello di flotta — senza uscire dal terminale.

cargo install essh
Oppure scarica un binario per macOS o Linux, arm64 o x86_64, dalla pagina Release.
Dal sorgente:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
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
Gli host provengono da ~/.ssh/config — incluse IdentityFile, ProxyJump e
Match — quindi non c'è nulla da importare prima di iniziare.
Tutte le operazioni comuni sono a un solo tasto. La shell conserva ogni
combinazione Ctrl, quindi Ctrl+D continua a significare EOF e Ctrl+C
continua a interrompere.
Per qualsiasi altra cosa, premi Ctrl+A, rilascia, poi il tasto — s dividi,
w chiudi, t tema, 1–9 vai alla sessione, [/] ridimensiona. La barra
nella parte inferiore di una sessione elenca i tasti attivi in quel momento,
quindi non c'è nulla da memorizzare. Modifica il prefisso con prefix_key
in [session].
Anche le combinazioni Option/Alt funzionano quando il terminale le invia
come Meta, ma i tasti funzione non richiedono configurazione e si comportano
allo stesso modo su entrambe le piattaforme.
Quaranta server web, trentanove a posto, e uno con un kernel diverso o un
nginx.conf modificato a mano. Una colonna di puntini verdi, strutturalmente,
non può mostrartelo.
ESSH raggruppa gli host in gruppi di pari tramite tag, raccoglie gli stessi dati da ciascuno e valuta ogni host rispetto al consenso del gruppo:
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.
La schermata Fleet indica il valore anomalo e gli aspetti alla base della segnalazione, così il verdetto è verificabile e non solo affermato. I dati che non riesce a raccogliere vengono riportati come non raccolti — mai come concordi.
Lo stato si trova in ~/.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
Le chiavi host vengono verificate e messe in cache, con una policy TOFU
configurabile (strict, prompt, auto). Cifrari e algoritmi KEX possono
essere limitati.
Riferimento completo per configurazione e architettura: SPEC.md.
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
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
La CI esegue tutti e tre a ogni push.
tests/tui_harness.rs esegue il vero binario su una PTY e verifica una
schermata di terminale analizzata entro una scadenza, perché i guasti che
contano in una TUI sono l'assenza di un frame, non un frame sbagliato. I test
che richiedono SSH si saltano quando nessun host è raggiungibile.
Fai un fork, crea un branch, apporta la modifica, esegui i tre controlli qui sopra e apri una PR.
MIT. Vedi LICENSE.
F1 aiuto | F2 monitor | F3 file | F4 inoltri di porta |
F5 mini monitor | F6 stacca | F7/F8 sessione prec./succ. | F9 nuova sessione |
F10 menu comandi |
| Sessioni multiple | Schede e divisioni in un'unica finestra, con scrollback e riconnessione per ogni sessione. |
| Monitor host live | CPU, memoria, disco, rete e processi principali, campionati in background così la vista è già popolata quando la apri. Nessun agente — semplici canali di esecuzione SSH. |
| Divergenza | Confronta ogni host con il suo gruppo di pari e ti dice quale host differisce, su quale aspetto e perché. |
| Trasferimento file | Browser locale/remoto a due pannelli via SFTP. |
| Inoltro di porte | Aggiungi, ispeziona e rimuovi gli inoltri senza chiudere la sessione. |
| Audit e replay | Log di audit JSON strutturato; le sessioni vengono registrate in asciicast per il replay. |