cargo install essh
或者从 Releases 获取适用于 macOS 或 Linux、arm64 或 x86_64 的二进制文件。
从源码构建:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
essh # 启动器:输入以搜索,按 Enter 连接
essh connect deploy@web-01 # 直接连接主机
essh workspace open prod # 恢复已保存的会话集合
essh run web -- uptime # 向带标签的组群发命令
主机来自 ~/.ssh/config——包括 IdentityFile、ProxyJump 和
Match——因此无需导入任何内容即可开始使用。
所有常用操作只需一次按键。Shell 保留所有 Ctrl 组合键,
因此 Ctrl+D 仍表示 EOF,Ctrl+C 仍可中断。
F1 帮助 | F2 监控 | F3 文件 | F4 端口转发 |
F5 迷你监控 | F6 分离 | F7/F8 上一个/下一个会话 | F9 新会话 |
F10 命令菜单 |
在 macOS 上,那一行默认是亮度键和音量键——F10 是静音。
要么按住 fn 配合使用,要么在 系统设置 → 键盘 → 将 F1、F2
等键用作标准功能键 中开启一次。下面的前缀方式两者都不需要,且在任何地方都有效。
对于其他操作,按下 Ctrl+A,松开,再按对应按键——s 分屏、w 关闭、
t 主题、1–9 跳转到会话、[/] 调整大小。会话底部
的条带会列出当前适用的按键,因此无需记忆。可在 [session] 下通过
prefix_key 更改前缀。
Option/Alt 组合键在仪表盘和其他界面上有效,但在 shell 获得焦点时无效——
此时 essh 只占用一个按键,即前缀键,其余全部转发,
因此 Alt+f 仍是 readline 的 forward-word,Alt+. 仍是 yank-last-argument。
在会话中则使用功能键或前缀键。
| 多会话 | 单窗口内的标签页和分屏,支持每个会话的滚动回看和自动重连。 |
| 实时主机监控 | CPU、内存、磁盘、网络和进程排行,后台采样,打开视图时数据已就绪。无需代理——纯 SSH exec 通道。 |
| 差异对比 | 将每台主机与其对等组进行比较,告诉你哪台主机在哪个方面存在差异,以及原因。 |
| 文件传输 | 基于 SFTP 的双栏本地/远程文件浏览器。 |
| 端口转发 | 无需断开会话即可添加、查看和删除转发规则。 |
| 审计与回放 | 结构化 JSON 审计日志;会话录制为 asciicast 格式以供回放。 |
四十台 Web 服务器,三十九台正常,一台内核不同或
nginx.conf 被手动修改过。一列绿点根本无法在结构上向你展示这一点。
ESSH 按标签将主机分组为对等组,从每台主机收集相同的事实, 并针对组的共识对每台主机进行评分:
100.0% 的 16 项方面检查一致
0 台主机的 0 个方面存在差异。
2 台主机从未被探测过,因此其方面状态为未知而非一致。
Fleet 界面会指出异常主机及其背后的差异方面,因此结论是可核验的 而非武断的。无法收集的事实会被报告为未收集——绝不会被当作一致。
共八个,用 t 循环切换(会话内用 Alt+t,因为 t 属于 shell),
并持久化到配置中:
dark(默认)· terminal · light · solarized · dracula · nord · ocean · sky
terminal 不固定任何自身颜色——每个槽位都解析为 ANSI 条目,
前景色和背景色使用你终端自身的设置,因此 pywal、matugen 或
终端配置文件可以直接生效。sky 和 light 绘制自己的底色;
ocean 使用终端底色并在其上叠加固定调色板。
或者从命令菜单直接跳转到某个主题——F10,或在会话外按 Ctrl+P——
然后输入主题名称。
essh --theme terminal # 也接受:system, ansi
essh --theme dracula hosts list
该标志仅对本次运行生效且不会写回配置,因此适合先试用而不必承诺。
在 TUI 中按 t 则会更改并保存。
状态文件位于 ~/.essh/:config.toml、cache.db、audit.log、
sessions/、recordings/、known_cas/。
essh config init # 写入默认配置
essh config edit # 在 $EDITOR 中打开
essh config resolve web-01 # 显示 ssh_config 如何解析主机
主机密钥会被验证并缓存,支持可配置的 TOFU 策略
(strict、prompt、auto)。可限制密码套件和 KEX 算法。
完整配置与架构参考: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> # 过去会话的诊断信息
essh why <host> # 解释主机为何无法连接
essh audit tail --lines 20
essh bench # 已发布的性能数据
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。