
essh v0.3.2
TUIを備えた拡張SSHクライアント — 接続、キー、セッションを管理
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
純Rust製のSSHクライアントで、高密度なNetwatch風TUIを備えています。複数セッション、 ライブホストメトリクス、フリート全体の乖離 — ターミナルから離れることなく実現します。

インストール
cargo install essh
または、macOS / Linux 向けのバイナリ(arm64 / x86_64)を Releases から入手できます。
ソースから:
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 を含む)。そのため、開始前にインポートするものはありません。
キー
よく使う操作はすべてワンキープレスです。シェルはすべての 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 の組み合わせも機能します。ただし、ファンクションキーは設定不要で、両プラットフォームで同じ動作をします。
機能
| 複数セッション | 1つのウィンドウでタブと分割を実現。セッションごとのスクロールバックと再接続に対応。 |
| ライブホストモニター | CPU、メモリ、ディスク、ネットワーク、上位プロセスをバックグラウンドでサンプリングし、開いたときにすぐ表示されます。エージェント不要 — 通常のSSH execチャネルのみ。 |
| 乖離 | 各ホストをピアグループと比較し、どのホストがどのファセットで、なぜ異なるのかを示します。 |
| ファイル転送 | SFTPによるローカル/リモートの2ペインブラウザ。 |
| ポートフォワーディング | セッションを切断せずにフォワードを追加・確認・削除できます。 |
| 監査とリプレイ | 構造化されたJSON監査ログ。セッションはリプレイ用にasciicastとして記録されます。 |
乖離
40台のWebサーバーのうち39台は正常、1台だけカーネルが異なるか、手編集された 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 はすべてのプッシュでこれら3つを実行します。
tests/tui_harness.rs は実バイナリを PTY 上で駆動し、締め切り付きでパース済みのターミナル画面に対してアサーションを行います。TUI で重要な失敗は「間違ったフレーム」ではなく「フレームが表示されない」ことだからです。SSH を必要とするテストは、到達可能なホストがない場合に自身をスキップします。
コントリビューション
フォークし、ブランチを切り、変更を加え、上記の3つのチェックを実行し、PRを開いてください。
ライセンス
MIT。 LICENSE を参照してください。