
Cliente SSH aprimorado com TUI — gerencie conexões, chaves e sessões
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
SSH aprimorado para quem tem frotas
Um cliente SSH 100% em Rust com uma TUI densa no estilo Netwatch. Múltiplas sessões, métricas de host em tempo real e divergência em toda a frota — sem sair do terminal.

cargo install essh
Ou baixe um binário para macOS ou Linux, arm64 ou x86_64, em Releases.
A partir do código-fonte:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
essh # inicializador: digite para pesquisar, Enter para conectar
essh connect deploy@web-01 # direto para um host
essh workspace open prod # restaura um conjunto salvo de sessões
essh run web -- uptime # executa um comando em um grupo marcado por tag
Os hosts vêm de ~/.ssh/config — incluindo IdentityFile, ProxyJump e
Match — então não há nada para importar antes de começar.
Tudo que é comum está a um toque de tecla. O shell mantém todas as combinações
com Ctrl, então Ctrl+D continua significando EOF e Ctrl+C continua
interrompendo.
F1 ajuda | F2 monitor | F3 arquivos | F4 encaminhamentos de porta |
F5 mini monitor | F6 desanexar | F7/F8 sessão anterior/próxima | F9 nova sessão |
F10 menu de comandos |
No macOS, essa linha é brilho e volume por padrão — F10 silencia.
Segure fn junto com elas ou ative System Settings → Keyboard → Use F1, F2,
etc. as standard function keys uma vez. O caminho do prefixo abaixo não precisa
de nenhum dos dois e funciona em qualquer lugar.
Para qualquer outra coisa, pressione Ctrl+A, solte e depois a tecla — s
divide, w fecha, t tema, 1–9 pula para a sessão, [/] redimensiona.
A faixa na parte inferior de uma sessão lista as teclas que se aplicam no
momento, então não há nada para memorizar. Altere o prefixo com prefix_key em
[session].
Combinações com Option/Alt funcionam no painel e nas outras telas, mas
não enquanto um shell tem foco — ali o essh reivindica exatamente uma tecla,
o prefixo, e encaminha todo o resto, então Alt+f continua sendo o
forward-word do readline e Alt+. continua sendo o yank-last-argument. Em uma
sessão, são as teclas de função ou o prefixo.
| Múltiplas sessões | Abas e divisões em uma única janela, com scrollback e reconexão por sessão. |
| Monitor de host em tempo real | CPU, memória, disco, rede e principais processos, amostrados em segundo plano para que a visão já esteja quente quando você abrir. Sem agente — canais SSH exec simples. |
| Divergência | Compara cada host com seu conjunto de pares e informa qual host difere, em qual faceta e por quê. |
| Transferência de arquivos | Navegador local/remoto de dois painéis via SFTP. |
| Encaminhamento de porta | Adicione, inspecione e remova encaminhamentos sem derrubar a sessão. |
| Auditoria e reprodução | Log de auditoria JSON estruturado; sessões gravam em asciicast para reprodução. |
Quarenta servidores web, trinta e nove perfeitos e um com kernel diferente ou
um nginx.conf editado à mão. Uma coluna de pontos verdes estruturalmente não
consegue mostrar isso.
O ESSH agrupa hosts em conjuntos de pares por tag, coleta os mesmos fatos de cada um e pontua cada host contra o consenso do grupo:
100.0% de 16 verificações de facetas concordam
0 facetas divergem em 0 hosts.
2 hosts nunca foram sondados, então suas facetas são desconhecidas em vez de em concordância.
A tela Fleet nomeia o ponto fora da curva e as facetas por trás da afirmação, para que o veredito possa ser verificado em vez de apenas afirmado. Fatos que não podem ser coletados são relatados como não coletados — nunca como concordância.
Oito, alternados com t (e Alt+t dentro de uma sessão, onde t pertence ao
shell), persistidos no config:
dark (padrão) · terminal · light · solarized · dracula · nord · ocean · sky
terminal não fixa nenhuma cor própria — cada slot resolve para uma entrada
ANSI e o primeiro plano e o fundo usam os do seu próprio terminal, então pywal,
matugen ou um perfil de terminal passam direto. sky e light pintam seu
próprio fundo; ocean usa o do seu terminal com uma paleta fixa por cima.
Ou vá direto para um pelo menu de comandos — F10, ou Ctrl+P fora de uma
sessão — e digite o nome.
essh --theme terminal # também aceita: system, ansi
essh --theme dracula hosts list
A flag vale para uma única execução e não é gravada de volta, então é uma
maneira de experimentar sem se comprometer. t na TUI muda e salva.
O estado fica em ~/.essh/: config.toml, cache.db, audit.log,
sessions/, recordings/, known_cas/.
essh config init # grava um config padrão
essh config edit # abre no $EDITOR
essh config resolve web-01 # mostra como o ssh_config resolve um host
As chaves de host são verificadas e armazenadas em cache, com uma política TOFU
configurável (strict, prompt, auto). Cifras e algoritmos KEX podem ser
restringidos.
Referência completa de configuração e arquitetura: 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> # diagnósticos para uma sessão passada
essh why <host> # explica por que um host não vai conectar
essh audit tail --lines 20
essh bench # números de desempenho publicados
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
A CI executa os três a cada push.
tests/tui_harness.rs dirige o binário real em um PTY e faz asserções em uma
tela de terminal analisada com um prazo, porque as falhas que importam em uma
TUI são a ausência de um frame em vez de um errado. Os testes que precisam de
SSH se pulam quando nenhum host está acessível.
Faça um fork, crie um branch, faça a mudança, rode as três verificações acima, abra um PR.
MIT. Veja LICENSE.