
Client SSH potenziato con TUI — gestisci connessioni, chiavi e sessioni
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
SSH potenziato per chi gestisce flotte
Un client SSH in puro Rust con una TUI densa in stile Netwatch. Sessioni multiple, metriche live degli host e divergenze a livello di flotta — senza lasciare il terminale.

cargo install essh
Oppure scarica un binario per macOS o Linux, arm64 o x86_64, dalla pagina Releases.
Dal sorgente:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
essh # launcher: digita per cercare, Invio per connetterti
essh connect deploy@web-01 # direttamente a un host
essh workspace open prod # ripristina un set salvato di sessioni
essh run web -- uptime # invia un comando a un gruppo taggato
Gli host provengono da ~/.ssh/config — inclusi IdentityFile, ProxyJump e
Match — quindi non c'è nulla da importare prima di iniziare.
Tutto ciò che è comune è a un solo tasto. La shell conserva ogni combinazione
Ctrl, quindi Ctrl+D continua a significare EOF e Ctrl+C continua a interrompere.
F1 aiuto | F2 monitor | F3 file | F4 inoltro porte |
F5 mini monitor | F6 scollega | F7/F8 sessione prec./succ. | F9 nuova sessione |
F10 menu comandi |
Su macOS, quella riga è luminosità e volume di default — F10 silenzia.
Tieni premuto fn insieme a essi, oppure attiva una volta Impostazioni di Sistema → Tastiera → Usa F1, F2,
ecc. come tasti funzione standard. La via del prefisso qui sotto non richiede nulla di tutto ciò e
funziona ovunque.
Per qualsiasi altra cosa, premi Ctrl+A, rilascia, poi il tasto — s dividi, w chiudi,
t tema, 1–9 salta alla sessione, [/] ridimensiona. La barra in fondo
a una sessione elenca i tasti applicabili in quel momento, quindi non c'è nulla da
memorizzare. Cambia il prefisso con prefix_key sotto [session].
Le combinazioni Option/Alt funzionano sulla dashboard e sulle altre schermate, ma
non mentre una shell ha il focus — lì essh rivendica esattamente un tasto, il prefisso,
e inoltra tutto il resto, quindi Alt+f resta readline forward-word e
Alt+. resta yank-last-argument. In una sessione si usano i tasti funzione o il
prefisso.
| Sessioni multiple | Schede e divisioni in un'unica finestra, con scrollback e riconnessione per sessione. |
| Monitor host live | CPU, memoria, disco, rete e processi principali, campionati in background così la vista è già calda quando la apri. Nessun agente — semplici canali exec 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 porte | Aggiungi, ispeziona e rimuovi inoltri senza chiudere la sessione. |
| Audit e replay | Log di audit JSON strutturato; le sessioni registrano in asciicast per il replay. |
Quaranta server web, trentanove a posto, e uno con un kernel diverso o un
nginx.conf modificato a mano. Una colonna di punti verdi strutturalmente non può mostrartelo.
ESSH raggruppa gli host in gruppi di pari per tag, raccoglie gli stessi dati da ciascuno, e valuta ogni host rispetto al consenso del gruppo:
100.0% di 16 controlli sugli aspetti concordano
0 aspetti divergono su 0 host.
2 host non sono mai stati sondati, quindi i loro aspetti sono sconosciuti piuttosto che concordanti.
La schermata Fleet nomina l'anomalia e gli aspetti alla base dell'affermazione, così il verdetto è verificabile piuttosto che asserito. I dati che non riesce a raccogliere vengono segnalati come non raccolti — mai come concordanti.
Otto, ciclabili con t (e Alt+t dentro una sessione, dove t appartiene alla
shell), salvati nella configurazione:
dark (default) · terminal · light · solarized · dracula · nord · ocean · sky
terminal non fissa colori propri — ogni slot si risolve in una voce ANSI e
primo piano e sfondo usano quelli del tuo terminale, quindi pywal, matugen o un
profilo di terminale passano direttamente. sky e light dipingono il proprio
sfondo; ocean usa quello del tuo terminale con una palette fissa sopra.
Oppure vai direttamente a uno dal menu comandi — F10, o Ctrl+P fuori da una
sessione — e digita il suo nome.
essh --theme terminal # accetta anche: system, ansi
essh --theme dracula hosts list
Il flag vale per una sola esecuzione e non viene riscritto, quindi è un modo per provarne uno
senza impegnarsi. t nella TUI lo cambia e lo salva.
Lo stato vive in ~/.essh/: config.toml, cache.db, audit.log,
sessions/, recordings/, known_cas/.
essh config init # scrive una configurazione di default
essh config edit # la apre in $EDITOR
essh config resolve web-01 # mostra come ssh_config risolve un host
Le chiavi host vengono verificate e memorizzate nella 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> # diagnostica per una sessione passata
essh why <host> # spiega perché un host non si connetterà
essh audit tail --lines 20
essh bench # numeri di performance pubblicati
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 guida il binario reale su una PTY e verifica su una schermata
di terminale parsata con una scadenza, perché i fallimenti che contano in una TUI sono
l'assenza di un frame piuttosto che uno sbagliato. I test che richiedono SSH si
saltano da soli quando nessun host è raggiungibile.
Fork, branch, fai la modifica, esegui i tre controlli sopra, apri una PR.
MIT. Vedi LICENSE.