RelayBar: SSH ポートフォワード用の macOS ネイティブ メニューバー マネージャー
RelayBar: SSH ポートフォワード用の macOS ネイティブ メニューバー マネージャー
RelayBar は、システムの組み込み ssh クライアントを使用して外部依存関係なしでローカル SSH ポートフォワードを管理する macOS ネイティブ メニューバー アプリケーションです。
コア機能とトンネル管理
RelayBar は、ユーザーがローカル (-L) SSH フォワードを管理できるようにします。5 フィールド フォームによる手動入力と、一般的な SSH コマンドのインポート(例: ssh -N -L 8080:localhost:3000 user@host)の両方をサポートします。
Key management features include:
- ワンクリック コントロール: ユーザーはシングルクリックで個々のトンネルを開始および停止できます。
- ブラウザ統合: トンネルを開始し、関連付けられたローカル URL をデフォルトのウェブ ブラウザで同時に開くことができます。
- ワンクリック トンネル作成: トンネルは手動で追加したり、既存のコマンドからインポートしたりできます。
- ローカル ストレージ: トンネルの定義は、ユーザーのローカル
UserDefaultsに保存されます。 - プロセス クリーンアップ: RelayBar アプリケーションが終了すると、すべての子 SSH プロセスが終了します。
信頼性と接続処理
RelayBar は、不安定な接続に対処するために自動再接続ロジックを実装しています。トンネルが予期せず切断された場合、アプリケーションは指数バックオフ戦略を使用して接続を最大 10 回まで再試行します。起動時の失敗は、メニューバー インターフェイスのトンネル エントリのすぐ横に表示され、すぐに確認できます。
セキュリティとシステム統合
RelayBar は、サンドボックス化されていないアプリケーションとして動作するように設計されており、コマンドライン SSH クライアントのように振る舞うことができます。この統合により、ユーザーの ~/.ssh/config と known_hosts ファイルにアクセスし、設定されたアイデンティティ ファイルを利用し、ユーザーの SSH エージェントへのアクセスを継承することができます。
セキュリティを維持するために、RelayBar はいくつかの制限を適用します:
- シェルの呼び出しなし: アプリケーションはシェルを呼び出してコマンドを実行することは決してありません。
- 制限されたオプション: 安全な接続オプションである
-p、-J、-i、および特定の-o値はインポート時に保持されますが、ローカル コマンドを実行したり、任意の構成ファイルを選択したり、ログを書き込む可能性のあるオプションは拒否されます。 - アイテムごとに 1 つのフォワード: 各 RelayBar アイテムは意図的に 1 つのローカル (
-L) フォワードに限定されます。
SSH は非インタラクティブに実行されるため、パスワード プロンプトはサポートされません。ユーザーは認証に SSH キーまたは SSH エージェントに依存する必要があります。
ビルドと開発要件
RelayBar のコンパイルには macOS 13 以上および Xcode コマンドライン ツールが必要です。ビルド プロセスでは、シェル スクリプト (./scripts/build-app.sh) を使用し、ログイン キーチェインから Developer ID Application 証明書を自動的に識別して、ハードened ランタイムでアプリに署名します。
配布のために、プロジェクトは ZIP ファイルへのパッケージングと、notarytool を使用したノタライズ用のスクリプトを提供し、アプリが警告なく macOS Gatekeeper を通過できるようにします。
コミュニティの視点
RelayBar はトンネル管理のためのネイティブ GUI を提供しますが、一部のユーザーは高い安定性が必要な場合に代替ツールを使用していることを指摘しています。Hacker News で一人のユーザーが次のように述べています:
私は仕事でこれらをたくさん必要とし、インターネット接続が不安定であるため、autossh を使用する傾向があります!
これは、RelayBar がネイティブ macOS エクスペリエンスに焦点を当てていることと、autossh のような専門的なコマンドライン ユーティリティを使用して永続的な接続管理を行うことの違いを強調しています。