
TUIを備えた拡張SSHクライアント — 接続、キー、セッションを管理
永続セッションとライブヘルスダッシュボードを備えた SSH ワークスペース。
接続が切断されてもリモートシェルを動かし続け、キーまたはマウスでホストを切り替え、ターミナルから離れることなくシステムの状態を確認できます。 ESSH は接続に OpenSSH を、作業を維持するために tmux を使用します。
df と lsblk でディスクを確認し、ps でビジーなプロセスを見つけ、vmstat でシステムアクティビティをサンプリングし、ss と ip でソケットとインターフェースを確認します。
デモでは、ターミナルテーマの切り替え、サイド・ハーフ・フルのヘルスビュー、セッションの切り替え、ヘルプ、そして切断された接続が同じリモートシェルを復元する様子を紹介します。
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 | Sessions を開く。セッションを選択するか n で新規開始 |
| F4 | セッションを動かしたままメインメニューに戻る |
| F5 / F6 | 前 / 次のセッションに切り替え |
| Hosts で h | 選択したホストのヘルスを開く |
| 接続切断後に r | 再接続 |
| Hosts で q | リモート作業を動かしたまま ESSH を終了 |
セッションタブやナビゲーションコントロールをクリックしてビューを切り替えます。行をクリックして選択し、ダブルクリックで接続または切り替えます。マウスホイールでスクロールし、ペインをクリックしてフォーカスし、仕切りをドラッグしてサイズを変更します。
キーボードのファンクション行が明るさや音量に割り当てられている場合は、F キーを押すときに Fn を押したままにするか、キーボード設定で標準のファンクションキーを有効にしてください。ナビゲーションコントロールもクリック可能で、F1 に利用可能なキーの一覧が表示されます。
リモートセッションは、リモートアカウントに設定されたログインシェルを起動し、通常のスタートアップファイルを読み込みます—zsh、bash、fish、あるいはそのアカウントが使用する任意のシェルです。プロンプト、エイリアス、シェルのキーバインドはそのリモートアカウントから取得されます。既存のシェルは再接続時に実行状態を保持します。
ESSH はデフォルトでターミナルの色を使用します。テーマを選択すると、ダッシュボードとともにシェルの前景色と背景色が変わります:
essh --theme terminal
essh --theme netwatch
essh --theme light
メニューやヘルスビューで t を押すか、シェルから 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 を押して以下を循環します:
| ビュー | 表示内容 |
|---|---|
| Terminal | セッションバーとナビゲーションバー付きのシェル |
| Side health | トラフィック、CPU、メモリ、ディスク、レイテンシを示す細いストリップ |
| Half health | シェルとダッシュボードがターミナルを共有 |
| Full health | ネットワークトラフィック、CPU コア、メモリ、ストレージ、ピア、プロセス |
ダッシュボードは細いメーターとライブの読み取り値を使用します。利用できない読み取り値は — と表示され、切断されたホストは明確にマークされます。幅の狭いターミナルではサイドレイアウトがスキップされます。
ダッシュボード内:
直接アクセスするには、Ctrl+A を押して離し、h でフルヘルス、または m でサイドヘルス → ハーフヘルス → オフ を循環します。
F3 の後に n を押して、別の独立したセッションを開きます。F5 / F6、Sessions ピッカー、またはマウスで切り替えます。F4 はセッションを終了せずにホスト一覧に戻ります。
セッション ID はローカルの再起動後も維持されます。再接続すると、リモートシェルがまだ存在する場合は再アタッチします。終了している場合は、ESSH が新しいシェルを起動します。切断されたセッションのリモート状態は、再接続するまで未確認のままです。
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 ソケットを使用します。 デモの記録と検証では、ツアーを再現する方法を説明しています。
コントリビュートするには、ブランチを作成し、変更を加え、チェックを実行して、プルリクエストを開きます。