コマンド紹介シリーズ:sshm

に公開

コマンド紹介シリーズ第15回目の本日はsshmを紹介しようと思います。sshmを利用するとsshの設定に関してTUIインターフェースで操作できます。

なお、第14回は以下になりますので、ぜひご興味があればご覧ください。

https://zenn.dev/akasan/articles/80f8931f8523cd

sshmとは?

公式GitHubによると、

sshmは、SSHホストの管理と接続方法を変革する美しいコマンドラインツールです。Go言語で構築され、直感的なTUIインターフェースを備えているため、SSH接続管理が簡単かつ快適になります。

とのことで、SSHホストをTUIで管理できるものとのことです。普段は~/.ssh/configなどでファイルベースでSSH設定を管理していますが、TUIで管理できるのであればとても便利だと思い、今回使ってみました。

コアとなる機能

sshmのコア機能は以下とのことです。

  • 美しいTUIインターフェース: 洗練されたインタラクティブなターミナルUIでSSHホストを操作
  • クイック接続: TUIまたはCLIからsshm <host>コマンドを使用して任意のホストに瞬時に接続
  • ポート転送: ローカル、リモート、ダイナミック(SOCKS)転送を簡単に設定可能で履歴も保持される
  • 簡単な管理: SSH設定をシームレスに追加、編集、移動、管理
  • タグサポート: カスタムタグを使用してホストを整理し、より適切に分類
  • スマート検索: 組み込みのフィルタリングと検索機能でホストを素早く検索
  • リアルタイムステータス: 非同期pingチェックと色分けされたステータスを備えたSSH接続のリアルタイムインジケーター
  • スマートアップデート: アップデート通知付きの自動バージョンチェック
  • 接続履歴: 最終ログインのタイムスタンプでSSH接続を追跡

技術的な特徴

技術的には以下のような特徴があると言うことです。

  • セキュア: 既存の ~/.ssh/config ファイルと直接連携
  • カスタム設定のサポート: -cフラグを使用して任意のSSH 設定ファイルを使用
  • SSH Include のサポート: 複数のファイルにまたがる設定を整理するための SSH Include ディレクティブをフルサポート
  • SH オプションのサポート: 直感的なフォームを使用して任意の SSH 設定オプションを追加
  • 自動変換: コマンドライン形式と設定形式をシームレスに変換
  • 自動バックアップ: 変更前に設定を自動的にバックアップ
  • 検証: 組み込みの検証機能により設定エラーを防止
  • ProxyJump のサポート: 要塞ホストを介した安全な接続トンネリング
  • キーボードショートカット: vim のようなショートカットでパワーユーザー向けのナビゲーションを実現
  • クロスプラットフォーム: Linux、macOS (Intel および Apple Silicon)、Windows をサポート
  • 軽量: 依存関係のない単一バイナリで、設定は不要

早速使ってみる

インストール

私はmacbookwを使っているのでbrew経由でインストールしました。

brew install Gu1llaum-3/sshm/sshm

このほかのインストール方法については以下をご参照ください。

https://github.com/Gu1llaum-3/sshm#installation

TUIへアクセスしてみる

インストールしてからsshmコマンドを実行すると、以下のような画面が表示されます。SSHのアクセス情報が乗っているので隠していますが、左から順にホストに対して任意に設定できる名前、その次にIPアドレスまたはホスト名が乗っています。

pingによる接続確認

SSH設定は残っているけども古い情報であり接続ができないものがある場合もあると思います。そのような場合に、TUI上でpを押すとそれぞれのSSH設定でpingを実行することができます。実行するとそれぞれ接続確認がされ、名前の左側が接続チェック中は黄色、接続ができた場合は緑、失敗した場合は赤色の丸に変化します。

情報の表示

TUIなので十字キーで項目を選択できます。選択した項目でiを押すとその接続先情報をみることができます。例えばGitHubの設定に関する部分を選択すると以下のような情報が表示されました。

ホストの削除

TUI上でdを押すとそのホストを削除することができます。先ほどpingを実行した時に半分以上が古い情報だった、かつ使ってないのは明白だったのでdで削除してみました。dを押すと以下のように確認画面が表示され、Enterを押すと削除されます。

いらない項目を全て削除すると、以下のように不要なものが削除できていることが確認できます。

キーボードナビゲーションリスト

sshmのインタラクティブモードでは、以下のコマンドが利用できます。

  • ↑/↓ or j/k: ホストの選択
  • Enter: フォーカスされているホストへ接続する
  • a: 新しいホストの追加
  • e: ホストの編集
  • d: ホストの削除
  • m: ホスト情報を他の設定ファイルへ移動
  • f: ポートフォワーディングの設定
  • q: Quit
  • /: ホストの検索

まとめ

今回はsshmを利用してTUIでsshの情報を管理する方法を調べてみました。今回紹介したのは一部の機能だけですが、sshをよく利用する方は自分が持っている情報が最新の情報か、接続ができる状態かなどをチェックするのにぜひ利用してみてください。

Discussion