
Erweiterter SSH-Client mit TUI — Verbindungen, Schlüssel und Sitzungen verwalten
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Erweitertes SSH für Leute mit Flotten
Ein reiner Rust-SSH-Client mit einer dichten TUI im Netwatch-Stil. Mehrere Sitzungen, Live-Host-Metriken und Flottenweite Abweichungen — ohne das Terminal zu verlassen.

cargo install essh
Oder hol dir eine Binärdatei für macOS oder Linux, arm64 oder x86_64, von den Releases.
Aus dem Quellcode:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
essh # Launcher: tippen zum Suchen, Enter zum Verbinden
essh connect deploy@web-01 # direkt zu einem Host
essh workspace open prod # einen gespeicherten Satz von Sitzungen wiederherstellen
essh run web -- uptime # einen Befehl über eine getaggte Gruppe verteilen
Hosts stammen aus ~/.ssh/config — einschließlich IdentityFile, ProxyJump und
Match — es gibt also nichts zu importieren, bevor du loslegst.
Alles Übliche ist ein Tastendruck. Die Shell behält jede Ctrl-Kombination,
also bedeutet Ctrl+D weiterhin EOF und Ctrl+C unterbricht weiterhin.
F1 Hilfe | F2 Monitor | F3 Dateien | F4 Port-Weiterleitungen |
F5 Mini-Monitor | F6 Ablösen | F7/F8 vorherige/nächste Sitzung | F9 neue Sitzung |
F10 Befehlsmenü |
Auf macOS ist diese Reihe standardmäßig Helligkeit und Lautstärke — F10 stummt.
Halte entweder fn dabei oder aktiviere einmal Systemeinstellungen → Tastatur → F1, F2
usw. als Standard-Funktionstasten verwenden. Der Präfix-Weg unten braucht keines von beidem
und funktioniert überall.
Für alles andere drücke Ctrl+A, lass los, dann die Taste — s teilen, w schließen,
t Thema, 1–9 zu Sitzung springen, [/] Größe ändern. Der Streifen am unteren Rand
einer Sitzung listet die Tasten auf, die gerade gelten, es gibt also nichts zu merken.
Ändere den Präfix mit prefix_key unter [session].
Option/Alt-Kombinationen funktionieren auf dem Dashboard und den anderen Bildschirmen,
aber nicht, während eine Shell den Fokus hat — dort beansprucht essh genau eine Taste,
den Präfix, und leitet alles andere weiter, also bleibt Alt+f readlines forward-word und
Alt+. bleibt yank-last-argument. In einer Sitzung sind es Funktionstasten oder der
Präfix.
| Mehrere Sitzungen | Tabs und Splits in einem Fenster, mit Scrollback und Wiederverbindung pro Sitzung. |
| Live-Host-Monitor | CPU, Speicher, Festplatte, Netzwerk und Top-Prozesse, im Hintergrund abgetastet, sodass die Ansicht warm ist, wenn du sie öffnest. Kein Agent — einfache SSH-Exec-Kanäle. |
| Abweichungen | Vergleicht jeden Host mit seiner Peer-Gruppe und sagt dir, welcher Host abweicht, bei welchem Aspekt und warum. |
| Dateiübertragung | Zweispaltiger lokaler/entfernter Browser über SFTP. |
| Port-Weiterleitung | Weiterleitungen hinzufügen, prüfen und entfernen, ohne die Sitzung zu beenden. |
| Audit und Wiedergabe | Strukturiertes JSON-Auditprotokoll; Sitzungen zeichnen als asciicast für die Wiedergabe auf. |
Vierzig Webserver, neununddreißig in Ordnung, und einer mit einem anderen Kernel oder einer
handbearbeiteten nginx.conf. Eine Spalte grüner Punkte kann dir das strukturell nicht zeigen.
ESSH gruppiert Hosts per Tag in Peer-Gruppen, sammelt dieselben Fakten von jedem und bewertet jeden Host gegen den Konsens der Gruppe:
100.0% von 16 Aspekt-Prüfungen stimmen überein
0 Aspekte weichen über 0 Hosts ab.
2 Hosts wurden nie abgetastet, ihre Aspekte sind also unbekannt statt in Übereinstimmung.
Der Fleet-Bildschirm nennt den Ausreißer und die Aspekte hinter der Behauptung, sodass das Urteil überprüfbar statt bloß behauptet ist. Fakten, die es nicht sammeln kann, werden als nicht gesammelt gemeldet — niemals als Übereinstimmung.
Acht, durchgeschaltet mit t (und Alt+t innerhalb einer Sitzung, wo t der Shell gehört),
in der Konfiguration gespeichert:
dark (Standard) · terminal · light · solarized · dracula · nord · ocean · sky
terminal legt keine eigenen Farben fest — jeder Slot löst zu einem ANSI-Eintrag auf und
Vordergrund und Hintergrund verwenden die deines Terminals, sodass pywal, matugen oder ein
Terminalprofil direkt durchscheint. sky und light malen ihren eigenen Grund; ocean
verwendet den deines Terminals mit einer festen Palette darüber.
Oder springe direkt aus dem Befehlsmenü zu einem — F10, oder Ctrl+P außerhalb einer
Sitzung — und tippe seinen Namen.
essh --theme terminal # akzeptiert auch: system, ansi
essh --theme dracula hosts list
Das Flag gilt für einen Lauf und wird nicht zurückgeschrieben, es ist also ein Weg, eines
auszuprobieren, ohne sich festzulegen. t in der TUI ändert es und speichert.
Der Zustand liegt in ~/.essh/: config.toml, cache.db, audit.log,
sessions/, recordings/, known_cas/.
essh config init # eine Standardkonfiguration schreiben
essh config edit # sie in $EDITOR öffnen
essh config resolve web-01 # zeigen, wie ssh_config einen Host auflöst
Host-Schlüssel werden verifiziert und gecacht, mit einer konfigurierbaren TOFU-Richtlinie
(strict, prompt, auto). Chiffren und KEX-Algorithmen können eingeschränkt werden.
Vollständige Konfigurations- und Architektur-Referenz: 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> # Diagnose für eine vergangene Sitzung
essh why <host> # erklären, warum ein Host sich nicht verbinden wird
essh audit tail --lines 20
essh bench # veröffentlichte Leistungszahlen
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
CI führt alle drei bei jedem Push aus.
tests/tui_harness.rs treibt die echte Binärdatei auf einem PTY an und prüft einen geparsten
Terminalbildschirm mit einer Frist, weil die Fehler, die in einer TUI zählen, das Fehlen eines
Frames sind statt eines falschen. Die Tests, die SSH brauchen, überspringen sich selbst, wenn
kein Host erreichbar ist.
Fork, Branch, Änderung machen, die drei Prüfungen oben ausführen, PR eröffnen.
MIT. Siehe LICENSE.