essh
Enhanced SSH client for server fleets.
Most SSH tools stop at "you are connected." ESSH is built for what happens after that — working across multiple hosts without juggling terminal windows, watching CPU/memory/disk/network/process pressure while you’re on the box, and keeping connection diagnostics, recordings, file transfer, and port forwarding in the same workflow.
It’s a pure-Rust stack built on russh, ratatui, and vt100 — no OpenSSH UI dependency. ESSH is for people who manage real systems and want their SSH client to act like an operations tool, not just a transport. Connects where NetWatch observes.
cargo install essh
Install
cargo install esshmacOS and Linux only. Windows is not a supported local build target at this time.
git clone https://github.com/matthart1983/essh.git && cd essh && cargo build --releaseFirst 60 seconds
On first launch, ESSH creates ~/.essh/ with a working config, SQLite host cache, diagnostics directory, and audit log.
- 1Launch the dashboard$
essh - 2Direct connect$
essh connect user@host - 3Use a specific (or encrypted) key — prompts for the passphrase$
essh connect user@host -i ~/.ssh/id_ed25519 - 4Pull hosts from your existing SSH config$
essh hosts import - 5Run a command across a tagged group$
essh run web-servers -- uptime
Feature highlights
Keyboard flow
Global and session-ops keys. The dashboard has its own navigation set (1–4 tabs, j/k, Enter to connect, / to filter).
| Key | Action |
|---|---|
| ? / Alt+h | Help overlay |
| Alt+1 – Alt+9 | Jump to session |
| Alt+← / Alt+→ | Cycle sessions |
| Alt+Tab | Last-used session |
| Ctrl+p | Command palette |
| Alt+m | Host monitor |
| Alt+s | Split pane |
| Alt+f | File browser |
| Alt+p | Port forwarding |
| Alt+t | Cycle theme |
| Alt+d | Detach to dashboard |
| Alt+w | Close session |
Bring structure to a messy fleet
Tag hosts and define groups in ~/.essh/config.toml, then fan commands across a group.
[[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"CLI cheat sheet
essh # launch dashboard
essh connect user@host # direct SSH session
essh hosts list # list cached hosts
essh hosts import # import from ~/.ssh/config
essh keys list # list cached keys
essh run web-servers -- uptime # fan a command across a group
essh session list # list recordings
essh session replay <session-id> # replay a recording
essh audit tail --lines 20 # inspect recent audit events
essh config show # print active configSecurity
Host keys are verified and cached, with a configurable TOFU policy (strict / prompt / auto). Allowed ciphers and KEX algorithms can be restricted. Audit events are written as structured JSON, and session diagnostics and recordings are explicit, inspectable artifacts — ESSH gives operators more visibility without hiding what the tool is doing on their behalf.