essh v0.4.0
An SSH workspace with persistent sessions and live health dashboards.Keep remote shells running ac 2026-9-17 05:10:49 Author: kitploit.com(查看原文) 阅读量:6 收藏

An SSH workspace with persistent sessions and live health dashboards.

Keep remote shells running across connection drops, switch between hosts with keys or the mouse, and check system health without leaving your terminal. ESSH uses OpenSSH for connections and tmux to keep your work alive.

See it in action

ESSH admin workflow: Linux commands, health dashboards and session switching

Watch the 38-second demo · Download the browser replay

Inspect disks with df and lsblk, find busy processes with ps, sample system activity with vmstat, and check sockets and interfaces with ss and ip. The demo shows the side, half and full health views, session switching, help, and a dropped connection recovering the same remote shell.

Install

Download a binary for Linux or macOS, on x86_64 or ARM64, from Releases. Extract the archive and put essh somewhere on your PATH.

You need tmux 3.3+ and OpenSSH locally, and tmux on each remote host. Detailed health metrics are available for Linux hosts.

Or build from source with Rust:

git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh

Connect to a host

ESSH reads hosts from ~/.ssh/config, its own configuration, and its host cache. For example:

Host web-01
    HostName 192.168.1.20
    User deploy
    IdentityFile ~/.ssh/id_ed25519

Run essh, select a host, and press Enter. Use / to filter hosts and Esc to clear the filter. Press a to add a host or e to edit one. OpenSSH handles authentication and host-key checking.

Find your way around

KeyAction
F1Open or close help
F2Cycle terminal → side health → half health → full health → terminal
F3Open Sessions; select a session or press n to start another
F4Return to the main menu while sessions keep running
F5 / F6Switch to the previous / next session
h on HostsOpen health for the selected host
r after a connection dropReconnect
q on HostsLeave ESSH while remote work keeps running

Click session tabs and navigation controls to switch views. Click a row to select it; double-click to connect or switch. Use the mouse wheel to scroll, click panes to focus them, and drag dividers to resize them.

If your keyboard uses the function row for brightness or volume, hold Fn while pressing an F-key, or enable standard function keys in your keyboard settings. The navigation controls are also clickable, and F1 lists the available keys.

Choose your health view

Press F2 to cycle through:

ViewWhat you see
TerminalYour shell with the session and navigation bars
Side healthA narrow strip with traffic, CPU, memory, disk and latency
Half healthYour shell and a dashboard sharing the terminal
Full healthNetwork traffic, CPU cores, memory, storage, peers and processes

The dashboards use thin meters and live readings. Unavailable readings show ; disconnected hosts are clearly marked. Narrow terminals skip the side layouts.

In the dashboard:

  • Tab selects a panel; arrows and the mouse wheel scroll.
  • i selects a network interface; c / m sorts processes by CPU or memory.
  • Left / Right browses hosts, including hosts without a connected session.
  • Esc closes full health and restores the previous side view.
  • F2 from full health returns to the terminal with side health off.

For direct access, press Ctrl+A, release it, then h for full health or m to cycle side health → half health → off.

Work across sessions and panes

Use F3, then n, to open another independent session. Switch with F5 / F6, the Sessions picker, or the mouse. F4 returns to the host list without ending your sessions.

Session IDs survive local restarts. Reconnecting reattaches the remote shell when it still exists; if it has ended, ESSH starts a new shell. A disconnected session's remote state remains unverified until you reconnect.

Ctrl+A controls local tmux. Ctrl+B controls tmux on the remote host. Press the prefix, release it, then press the next key:

KeysAction
Ctrl+B, then %Split the remote terminal side by side
Ctrl+B, then "Split the remote terminal top and bottom
Ctrl+B, then an arrowMove between remote panes
Ctrl+A, then vSend the next key directly to the remote application
Ctrl+A, then xTerminate a remote session after confirmation

F1–F6 are reserved for ESSH. Use Ctrl+A, then v, when a remote application needs one of those keys.

Development

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

The live regression check uses an isolated SSH server and tmux sockets. Demo recording and verification explains how to reproduce the tour.

To contribute, create a branch, make your change, run the checks, and open a pull request.

License

MIT


文章来源: https://kitploit.com/en/posts/github-matthart1983-essh-v040
如有侵权请联系:admin#unsafe.sh