
essh v0.3.2
增强型SSH客户端,带有TUI界面 — 管理连接、密钥和会话
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
一个纯 Rust 编写的 SSH 客户端,配有紧凑的 Netwatch 风格 TUI。支持多会话、实时主机指标和集群范围的差异检测——无需离开终端。

安装
cargo install essh
或者从 发布页 获取适用于 macOS 或 Linux、arm64 或 x86_64 的二进制文件。
从源码构建:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
启动
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
主机来自 ~/.ssh/config — 包括 IdentityFile、ProxyJump 和 Match — 因此无需导入任何内容即可开始使用。
按键
所有常用操作都只需一次按键。Shell 保留所有 Ctrl 组合键,因此 Ctrl+D 仍表示 EOF,Ctrl+C 仍可中断。
F1 帮助 | F2 监控 | F3 文件 | F4 端口转发 |
F5 迷你监控 | F6 分离 | F7/F8 上一个/下一个会话 | F9 新会话 |
F10 命令菜单 |
对于其他操作,按下 Ctrl+A,松开,再按相应按键 — s 分屏,w 关闭,t 主题,1–9 跳转到会话,[/] 调整大小。会话底部的提示栏会列出当前适用的按键,因此无需记忆。可以通过 [session] 下的 prefix_key 更改前缀。
当您的终端将它们作为 Meta 发送时,Option/Alt 组合键同样有效;但功能键无需配置,在两个平台上表现一致。
功能
| 多会话 | 在单个窗口中支持标签页和分屏,并具备每个会话独立的回滚和重连功能。 |
| 实时主机监控 | CPU、内存、磁盘、网络和进程排行,在后台采样,因此打开时视图已就绪。无需代理——仅使用普通 SSH exec 通道。 |
| 差异检测 | 将每台主机与其对等组进行比较,并指出哪台主机在哪个方面存在差异以及原因。 |
| 文件传输 | 通过 SFTP 提供本地/远程双窗格浏览器。 |
| 端口转发 | 无需断开会话即可添加、检查和删除转发规则。 |
| 审计与回放 | 结构化 JSON 审计日志;会话记录为 asciicast 格式以供回放。 |
差异检测
四十台 Web 服务器,三十九台正常,但其中一台内核不同或 nginx.conf 被手动编辑过。一列绿点从结构上无法向你展示这一点。
ESSH 按标签将主机分组为对等组,从每台主机收集相同的事实,并根据组内共识对每台主机进行评分:
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.
Fleet 屏幕会指出异常主机及其背后的差异维度,因此结论是可核查的,而非凭空断言。无法收集的事实会报告为“未收集”——绝不会被当作一致。
配置
状态存储在 ~/.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
主机密钥经过验证并缓存,支持可配置的 TOFU 策略(strict、prompt、auto)。可限制加密算法和 KEX 算法。
完整的配置与架构参考: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
开发
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
CI 会在每次推送时运行以上三项检查。
tests/tui_harness.rs 在 PTY 上运行真实的二进制程序,并在截止时间内对解析后的终端屏幕进行断言,因为在 TUI 中真正重要的故障是缺少帧,而不是错误的帧。需要 SSH 的测试在无法连接到任何主机时会自动跳过。
贡献
Fork 仓库、创建分支、进行修改、运行上述三项检查,然后提交 PR。
许可证
MIT 许可。参见 LICENSE。