返回更新列表
新发布Aug 22, 2026

essh v0.3.2

增强型SSH客户端,带有TUI界面 — 管理连接、密钥和会话

分享

                         ███████╗███████╗███████╗██╗  ██╗
                         ██╔════╝██╔════╝██╔════╝██║  ██║
                         █████╗  ███████╗███████╗███████║
                         ██╔══╝  ╚════██║╚════██║██╔══██║
                         ███████╗███████║███████║██║  ██║
                         ╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝
                           为拥有服务器集群的人打造的增强版 SSH

crates.io CI License: MIT macOS Linux

一个纯 Rust 编写的 SSH 客户端,带有高密度、Netwatch 风格的 TUI。支持多会话、 实时主机指标和集群级差异对比——全程无需离开终端。

ESSH Demo

安装

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——包括 IdentityFileProxyJumpMatch——因此无需导入任何内容即可开始使用。

按键

所有常用操作只需一次按键。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 主题、19 跳转到会话、[/] 调整大小。会话底部 的条带会列出当前适用的按键,因此无需记忆。可在 [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 或 终端配置文件可以直接生效。skylight 绘制自己的底色; ocean 使用终端底色并在其上叠加固定调色板。

或者从命令菜单直接跳转到某个主题——F10,或在会话外按 Ctrl+P—— 然后输入主题名称。

essh --theme terminal        # 也接受:system, ansi
essh --theme dracula hosts list

该标志仅对本次运行生效且不会写回配置,因此适合先试用而不必承诺。 在 TUI 中按 t 则会更改并保存。

配置

状态文件位于 ~/.essh/config.tomlcache.dbaudit.logsessions/recordings/known_cas/

essh config init      # 写入默认配置
essh config edit      # 在 $EDITOR 中打开
essh config resolve web-01   # 显示 ssh_config 如何解析主机

主机密钥会被验证并缓存,支持可配置的 TOFU 策略 (strictpromptauto)。可限制密码套件和 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>        # 过去会话的诊断信息
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

分类