
Client SSH potenziato con TUI — gestisci connessioni, chiavi e sessioni
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
Un terminal. Sessioni SSH multiple. Insight live sugli host. Zero cambio di contesto.
ESSH è un client SSH puro Rust con una TUI nitida e ispirata a Netwatch, pensata per operatori che vogliono più di una semplice shell.
Connettiti velocemente, monitora lo stato dell'host in tempo reale, trasferisci file, gestisci inoltri e mantieni una traccia di audit pulita senza lasciare il terminale.
La maggior parte degli strumenti SSH si ferma a "sei connesso". ESSH è costruito per ciò che accade dopo.
ESSH è per chi gestisce sistemi reali e vuole che il proprio client SSH si comporti come uno strumento operativo, non solo come un mezzo di trasporto.

Dashboard, terminale multi-sessione, monitor host, pannello diviso, palette comandi, file browser e port forwarding in un unico flusso.
Al momento ESSH supporta solo build per macOS e Linux.
cargo install essh
git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh
Windows non è un target di build locale supportato al momento.
# Avvia la dashboard
essh
# Connessione diretta
essh connect user@host
# Usa una chiave specifica
essh connect user@host -i ~/.ssh/id_ed25519
# Usa una chiave crittografata (ESSH chiederà la passphrase)
essh connect user@host -i ~/.ssh/id_ed25519_encrypted
# Importa host dalla tua configurazione SSH esistente
essh hosts import
# Esegui un comando su un gruppo taggato
essh run web-servers -- uptime
Al primo avvio, ESSH crea ~/.essh/ e ti fornisce una configurazione funzionante, una cache SQLite degli host, una directory per la diagnostica e un percorso per i log di audit.
┌─ ESSH ── [1] web-prod [2] db-primary [3] staging ───────────────┐
│ deploy@web-prod:~$ │
│ │
│ journalctl -u api -f │
│ │
├───────────────────────────────────────────────────────────────────┤
│ RTT 12.3ms ↑1.2KB/s ↓48.5KB/s Loss 0.0% ● Excellent │
├───────────────────────────────────────────────────────────────────┤
│ CPU 23% ▁▂▃▄▅▆▅▃▂▁ MEM 40% ████████████████░░░░░░░░░ │
│ LOAD 0.82 0.64 0.55 NET RX 48.5KB/s TX 1.2KB/s │
│ DISK / 62% Top: node, nginx, postgres │
└───────────────────────────────────────────────────────────────────┘
L'idea è semplice: fedeltà del terminale quando hai bisogno di una shell, segnale operativo quando hai bisogno di contesto.
Alt+1-9, Alt+←/→ e Alt+Tab.Alt+s.~/.ssh/config.strict, prompt e auto.essh hosts import
ESSH supporta chiavi private protette da passphrase sia per connessioni CLI dirette che per la TUI.
# Connessione CLI singola con chiave crittografata
essh connect user@host -i ~/.ssh/id_ed25519_encrypted
# Aggiungi una chiave crittografata alla cache locale
essh keys add ~/.ssh/id_ed25519_encrypted --name laptop-key
Cosa aspettarsi:
ssh-agent funziona comunque.[[hosts]]
name = "web-prod-1"
hostname = "10.0.1.10"
user = "deploy"
key = "~/.ssh/id_ed25519"
[hosts.tags]
env = "production"
role = "web"
[[host_groups]]
name = "web-servers"
[host_groups.match_tags]
role = "web"
essh run web-servers -- sudo systemctl status nginx
essh session list
essh session replay <session-id>
ESSH include lo stesso set di temi integrati di NetWatch: dark, light, solarized, dracula e nord.
Usa t nelle viste stile dashboard o Alt+t da qualsiasi sessione per cambiare tema istantaneamente. Il tema selezionato viene salvato in ~/.essh/config.toml come:
theme = "dark"
essh # avvia dashboard
essh connect user@host # sessione SSH diretta
essh hosts list # elenca host in cache
essh hosts import # importa da ~/.ssh/config
essh keys list # elenca chiavi in cache
essh diag <session-id> # ispeziona diagnostica
essh session list # elenca registrazioni
essh session replay <session-id> # riproduce una registrazione
essh audit tail --lines 20 # ispeziona eventi di audit recenti
essh config show # stampa configurazione attiva
ESSH memorizza il suo stato in ~/.essh/.
~/.essh/
├── config.toml # configurazione principale
├── cache.db # cache host e chiavi
├── audit.log # traccia di audit strutturata
├── sessions/ # log di diagnostica per sessione
├── recordings/ # registrazioni asciicast
└── known_cas/ # autorità di certificazione fidate
Comandi utili:
essh config init
essh config edit
essh config show
Se vuoi la configurazione completa e le specifiche dell'architettura, vedi SPEC.md.
strict, prompt o auto.ESSH è costruito per dare agli operatori maggiore visibilità senza nascondere ciò che lo strumento fa per loro conto.
cargo build
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
GitHub Actions esegue gli stessi controlli principali su push e pull request verso main.
I contributi sono benvenuti.
cargo test, cargo clippy --all-targets --all-features -- -D warnings e cargo fmt --check.MIT. Vedi LICENSE.
ESSH è un SSH nativo del terminale con un po' più di ambizione.
| Pilastro | Cosa Ottieni |
|---|
| Flusso di lavoro fleet-first | Sfoglia gli host, filtra per tag, salta tra sessioni e invia comandi a gruppi da un unico posto. |
| Consapevolezza live della macchina | Monitor host integrato che mostra CPU, memoria, disco, carico, throughput di rete e processi principali in tempo reale. |
| Profondità operativa | Port forwarding, trasferimento file, jump host, notifiche, registrazioni, riconnessioni e log di audit sono parte del prodotto, non aggiunte successive. |
| Stack puro Rust | Basato su russh, ratatui e vt100 senza dipendenza dall'UI di OpenSSH. |
| Tasto | Azione |
|---|
? / Alt+h | Sovrapposizione aiuto |
Alt+1 - Alt+9 | Vai alla sessione |
Alt+← / Alt+→ | Cicla sessioni |
Alt+Tab | Ultima sessione usata |
Ctrl+p | Palette comandi |
Alt+t | Cicla tema |
Alt+d | Stacca e torna alla dashboard |
Alt+w | Chiudi sessione |
| Tasto | Azione |
|---|
Alt+m | Monitor host |
Alt+s | Pannello diviso |
Alt+[ / Alt+] | Ridimensiona pannello |
Alt+f | File browser |
Alt+p | Port forwarding |
Alt+r | Rinomina tab |
| Tasto | Azione |
|---|
1 - 4 | Cambia scheda |
j / k / ↑ / ↓ | Naviga tra gli host |
Enter | Connetti |
/ | Filtro live |
a | Aggiungi host |
d | Elimina host |
r | Aggiorna |
t | Cicla tema |