一个具有持久会话和实时健康仪表盘的 SSH 工作区。
在连接中断时保持远程 shell 持续运行,使用按键或鼠标在主机之间切换,无需离开终端即可检查系统健康状态。 ESSH 使用 OpenSSH 进行连接,并使用 tmux 保持你的工作持续运行。
使用 df 和 lsblk 检查磁盘,使用 ps 查找繁忙进程,使用 vmstat 采样系统活动,并使用 ss 和 ip 检查套接字和接口。
演示展示了终端主题切换、侧边、半屏和全屏健康视图、会话切换、帮助,
以及连接断开后恢复同一个远程 shell。
从 Releases 下载适用于 Linux 或 macOS、x86_64 或 ARM64 的二进制文件。解压归档文件,并将 essh 放到你的 PATH 中。
你需要在本地安装 tmux 3.3+ 和 OpenSSH,并在每个远程主机上安装 tmux。 详细的健康指标适用于 Linux 主机。
或者使用 Rust 从源码构建:
git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh
ESSH 从 ~/.ssh/config、其自身配置以及主机缓存中读取主机。
例如:
Host web-01
HostName 192.168.1.20
User deploy
IdentityFile ~/.ssh/id_ed25519
运行 essh,选择一个主机,然后按 Enter。使用 / 过滤主机,使用 Esc 清除过滤器。按 a 添加主机,或按 e 编辑主机。
OpenSSH 负责处理身份验证和主机密钥检查。
| 按键 | 操作 |
|---|---|
| F1 | 打开或关闭帮助 |
| F2 | 循环切换 终端 → 侧边健康 → 半屏健康 → 全屏健康 → 终端 |
| F3 | 打开会话;选择一个会话,或按 n 启动另一个会话 |
| F4 | 返回主菜单,同时会话继续运行 |
| F5 / F6 | 切换到上一个 / 下一个会话 |
| 在主机界面按 h | 打开所选主机的健康视图 |
| 连接断开后按 r | 重新连接 |
| 在主机界面按 q | 离开 ESSH,同时远程工作继续运行 |
点击会话标签和导航控件可切换视图。点击一行以选中它;双击以连接或切换。使用鼠标滚轮滚动,点击窗格以聚焦它们,拖动分隔线以调整大小。
如果你的键盘将功能键行用于亮度或音量,请在按 F 键时按住 Fn,或在键盘设置中启用标准功能键。 导航控件也可以点击,F1 会列出可用按键。
远程会话会启动远程账户配置的登录 shell,并加载其正常的启动文件——zsh、bash、fish,或该账户使用的任何 shell。 你的提示符、别名和 shell 键绑定来自该远程账户。 重新连接时,现有 shell 会保留其运行状态。
ESSH 默认使用你的终端颜色。选择一个主题可更改 shell 的前景色和背景色以及仪表盘:
essh --theme terminal
essh --theme netwatch
essh --theme light
在菜单或健康视图中按 t,或在 shell 中按 Ctrl+A,然后按 t,以打开主题选择器。方向键可预览每个调色板;Enter 或点击会应用并保存它。Esc 取消且不更改你的偏好。
可选择 Terminal、Netwatch、Light、Solarized、Dracula、Nord、Ocean 或 Sky。Netwatch 使用炭灰色背景、青色标题和绿色仪表。所选主题会应用于菜单、健康视图、导航栏和终端窗格。选择 Terminal 可恢复终端的原生颜色。程序和提示符仍可设置自己的颜色。
要保存偏好,请在 ~/.essh/config.toml 顶部设置 theme = "terminal"(或其他主题名称)。使用 essh tmux refresh 将其应用到已打开的工作区;SSH 会话会继续运行。你的终端模拟器控制字体和字体大小。
按 F2 循环切换:
| 视图 | 你会看到什么 |
|---|---|
| 终端 | 你的 shell,以及会话栏和导航栏 |
| 侧边健康 | 一个窄条,显示流量、CPU、内存、磁盘和延迟 |
| 半屏健康 | 你的 shell 和一个仪表盘共享终端 |
| 全屏健康 | 网络流量、CPU 核心、内存、存储、对等端和进程 |
仪表盘使用细仪表和实时读数。不可用的读数显示 —;断开连接的主机会被清楚标记。窄终端会跳过侧边布局。
在仪表盘中:
如需直接访问,请按 Ctrl+A,松开它,然后按 h 进入全屏健康,或按 m 循环切换 侧边健康 → 半屏健康 → 关闭。
使用 F3,然后按 n,打开另一个独立会话。使用 F5 / F6、会话选择器或鼠标进行切换。F4 返回主机列表,而不会结束你的会话。
会话 ID 在本地重启后仍然保留。重新连接时,如果远程 shell 仍然存在,则会重新附加;如果它已结束,ESSH 会启动一个新的 shell。断开连接的会话的远程状态在你重新连接之前仍处于未验证状态。
Ctrl+A 控制本地 tmux。Ctrl+B 控制远程主机上的 tmux。按下前缀键,松开它,然后按下一个键:
| 按键 | 操作 |
|---|---|
| Ctrl+B,然后 % | 将远程终端左右分屏 |
| Ctrl+B,然后 " | 将远程终端上下分屏 |
| Ctrl+B,然后一个方向键 | 在远程窗格之间移动 |
| Ctrl+A,然后 v | 将下一个按键直接发送到远程应用程序 |
| Ctrl+A,然后 x | 确认后终止远程会话 |
F1–F6 保留给 ESSH。当远程应用程序需要这些键之一时,请使用 Ctrl+A,然后 v。
cargo fmt --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo build --release
ESSH_BIN=target/release/essh python3 scripts/test-tmux-v3.py
实时回归检查使用隔离的 SSH 服务器和 tmux 套接字。 演示录制和验证 说明了如何复现该演示。
要贡献代码,请创建一个分支,进行更改,运行检查,然后打开一个拉取请求。