
essh v0.3.2
Cliente SSH mejorado con TUI — gestiona conexiones, claves y sesiones
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
Un cliente SSH en Rust puro con una TUI densa, estilo Netwatch. Múltiples sesiones, métricas de host en vivo y divergencia en toda la flota — sin salir de la terminal.

Instalación
cargo install essh
O descarga un binario para macOS o Linux, arm64 o x86_64, desde Releases.
Desde el código fuente:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
Inicio
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
Los hosts provienen de ~/.ssh/config — incluidos IdentityFile, ProxyJump y
Match —, así que no hay nada que importar antes de empezar.
Teclas
Todo lo habitual está a una pulsación de tecla. La shell conserva cada combinación
Ctrl, así que Ctrl+D sigue significando EOF y Ctrl+C sigue interrumpiendo.
F1 ayuda | F2 monitor | F3 archivos | F4 reenvíos de puertos |
F5 mini monitor | F6 desacoplar | F7/F8 sesión anterior/siguiente | F9 nueva sesión |
F10 menú de comandos |
Para cualquier otra cosa, pulsa Ctrl+A, suelta, y luego la tecla — s dividir,
w cerrar, t tema, 1–9 saltar a la sesión, [/] redimensionar. La barra
inferior de una sesión enumera las teclas que se aplican en ese momento, así que no
hay nada que memorizar. Cambia el prefijo con prefix_key en [session].
Las combinaciones Option/Alt también funcionan cuando tu terminal las envía
como Meta, pero las teclas de función no requieren configuración y se comportan
igual en ambas plataformas.
Qué hace
| Múltiples sesiones | Pestañas y divisiones en una sola ventana, con scrollback y reconexión por sesión. |
| Monitor de host en vivo | CPU, memoria, disco, red y procesos principales, muestreados en segundo plano para que la vista esté lista al abrirla. Sin agente: simples canales SSH exec. |
| Divergencia | Compara cada host con su conjunto de pares y te indica qué host difiere, en qué faceta y por qué. |
| Transferencia de archivos | Explorador local/remoto de dos paneles sobre SFTP. |
| Reenvío de puertos | Añade, inspecciona y elimina reenvíos sin cerrar la sesión. |
| Auditoría y reproducción | Registro de auditoría JSON estructurado; las sesiones se graban en asciicast para su reproducción. |
Divergencia
Cuarenta servidores web, treinta y nueve bien, y uno con un kernel diferente o un
nginx.conf editado a mano. Una columna de puntos verdes estructuralmente no puede
mostrarte eso.
ESSH agrupa los hosts en conjuntos de pares por etiqueta, recopila los mismos hechos de cada uno y puntúa cada host frente al consenso del grupo:
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 pantalla Fleet identifica el valor atípico y las facetas detrás de la afirmación, de modo que el veredicto se puede comprobar en lugar de ser una simple afirmación. Los hechos que no puede recopilar se notifican como no recopilados — nunca como acuerdo.
Configuración
El estado reside en ~/.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
Las claves de host se verifican y se almacenan en caché, con una política TOFU
configurable (strict, prompt, auto). Se pueden restringir los cifrados y
algoritmos KEX.
Referencia completa de configuración y arquitectura: 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
Desarrollo
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
La CI ejecuta las tres comprobaciones en cada push.
tests/tui_harness.rs ejecuta el binario real en una PTY y verifica una pantalla de
terminal analizada con un límite de tiempo, porque los fallos que importan en una
TUI son la ausencia de un frame, no uno incorrecto. Las pruebas que necesitan SSH
se omiten cuando ningún host es accesible.
Contribuciones
Haz un fork, crea una rama, haz el cambio, ejecuta las tres comprobaciones anteriores y abre un PR.
Licencia
MIT. Consulta LICENSE.