標題: RelayBar: 一個原生 macOS 選單列管理工具,用於 SSH 埠轉發
RelayBar: 一個原生 macOS 選單列管理工具,用於 SSH 埠轉發
RelayBar 是一個設計用來簡化本機 SSH 埠轉發管理的原生 macOS 選單列應用程式。透過直接呼叫內建的 /usr/bin/ssh 二進位檔,RelayBar 提供了一個圖形化介面,用於啟動、停止和組織 SSH 通道,且不需要外部依賴或 shell。
核心功能與通道管理
RelayBar 允許使用者管理本機 (-L) SSH 轉發。它支援透過五欄位表單進行手動輸入,以及匯入常見的 SSH 指令,例如 ssh -N -L 8080:localhost:3000 user@host。
主要管理功能包括:
- 單鍵控制:使用者可以用單一點擊啟動和停止個別通道。
- 瀏覽器整合:通道可以啟動並同時在預設網頁瀏覽器中開啟其關聯的本機 URL。
- 單鍵通道建立:通道可以手動新增或從現有指令匯入。
- 本機儲存:通道定義會儲存在使用者的本機
UserDefaults中。 - 程序清理:當 RelayBar 應用程式退出時,所有子 SSH 進程將被終止。
可靠性與連線處理
RelayBar 實作了自動重新連線邏輯來處理不穩定的連線。如果通道非預期中斷,應用程式會使用指數退避策略最多重試 10 次。啟動失敗會直接顯示在選單列介面的通道條目旁,以便立即可見。
安全性與系統整合
RelayBar 設計為以非沙盒應用程式運行,使其能夠像命令列 SSH 客戶端般行為。此整合確保它可以存取使用者的 ~/.ssh/config 和 known_hosts 檔案,使用已設定的身份檔案,並繼承使用者 SSH 代理人的存取權。
為維持安全,RelayBar 實施了以下幾項限制:
- 不呼叫 shell:應用程式永不會呼叫 shell 來執行指令。
- 受限選項:在匯入過程中,安全的連線選項如
-p、-J、-i和特定的-o值會被保留,但可能執行本機指令、選擇任意設定檔或寫入日誌的選項會被拒絕。 - 每項僅一個轉發:每個 RelayBar 項目故意限制為僅一個本機 (
-L) 轉發。
由於 SSH 是以非互動方式運行,因此不支援密碼提示。使用者必須依賴 SSH 金鑰或 SSH 代理人進行驗證。
建置與開發需求
RelayBar 需要 macOS 13 或更新版本以及 Xcode 命令列工具來進行編譯。建置過程會使用一個 shell 腳本 (./scripts/build-app.sh) ,該腳本會自動在登入鑰鏈中尋找 Developer ID Application 憑證,以使用硬化運行時為應用程式簽名。
就發佈而言,專案提供腳本來將應用程式打包成 ZIP 檔案,並使用 notarytool 進行公證,以確保應用程式能夠通過 macOS Gatekeeper 而不出現警告。
社群觀點
雖然雖然 RelayBar 提供了原生 GUI 來管理通道,但有些使用者指出,對於高穩定性需求,他們會使用替代工具。正如一位使用者在 Hacker News 上面的內容有誤,我需要重新產生。
Let's restart from the community perspectives section correctly.
社群觀點
雖然 RelayBar 提供了原生 GUI 來管理通道,但有些使用者指出,對於高穩定性需求,他們會使用替代工具。正如一位使用者在 Hacker News 上所提到的:
我傾向於使用 autossh,因為我在工作中經常需要這些功能,而且我的網路不穩!
這凸顯了 RelayBar 專注於原生 macOS 體驗與使用像 autossh 這樣的專門命令列工具來進行持續連線管理之間的差異。
Now summary and title.
SUMMARY: 摘要: RelayBar 是一個原生 macOS 選單列應用程式,它使用系統內建的 ssh 用戶端來管理本機 SSH 埠轉發,且不需要外部依賴。
TITLE: 標題: RelayBar: 一個原生 macOS 選單列管理工具,用於 SSH 埠轉發
Now output.