CH-J Tools透過 SSH 管理伺服器
選單

選用的系統驗證與 Vault 鎖定

下載檔案

本譯文正在進行語言審校。如有不明確之處,請對照英文原文。

請先使用主密碼建立或解除鎖定 Vault。開啟 Settings → Security(設定 → 安全性),檢查提供者的狀態,然後啟用生物辨識解除鎖定。登錄時會要求重新進行系統驗證。之後,登入畫面除了主密碼表單外,還會提供 Touch ID、Windows Hello 或指紋解除鎖定。Disable and remove enrollment(停用並移除登錄)只會移除本應用程式快取的金鑰,絕不會刪除作業系統中已登錄的指紋。

請務必保留主密碼:取消、逾時、硬體/鑰匙圈無法使用,以及登錄失效時,都需要改用密碼。生物辨識登錄僅限於目前的使用者、裝置與 Vault。它既不是復原機制,也不是備份。只有在完成既有的 SMAZAT 確認之後,重設 Vault 才會撤銷登錄,並刪除既有的加密設定檔與主機指紋。

平台 驗證與儲存 需求與限制
macOS Apple Silicon 原生 LocalAuthentication / Touch ID;具備 biometryCurrentSet 與 WhenUnlockedThisDeviceOnly 的 Security.framework 鑰匙圈 (Keychain) 項目 需要已登錄的 Touch ID、可用的感應器,以及可用的登入鑰匙圈。指紋變更會使該項目失效。正式版更新請使用穩定的 Developer ID 簽署;臨時 (ad hoc) 的 Alpha 簽署可能會破壞鑰匙圈信任與區域網路權限的追蹤。
Windows x64 附加至主要 HWND 的原生 WinRT Windows Hello 桌面互通;在 Windows 認證管理員中以目前使用者 DPAPI 加密的金鑰 需要已設定的 Hello 指紋、臉部辨識或 PIN 碼。這是便利性的解除鎖定:Hello 核准由應用程式強制執行,而 DPAPI 本身並不受生物辨識保護。以同一使用者身分執行的其他程式碼,可能可以解密該認證。
Ubuntu x64 透過 fprintd D-Bus 使用目前使用者已登錄的指紋;明確的 libsecret / Secret Service 認證儲存 需要支援的讀取器、已登錄的指紋、執行中的桌面 Secret Service 與預設鑰匙圈。這是便利性的解除鎖定:鑰匙圈中的認證在密碼學上並未與指紋驗證綁定。沒有 basic_text 或純文字檔案的備援。

在 Ubuntu 上,選用的執行環境套件為 python3-gi、gir1.2-secret-1、gnome-keyring(或其他相容的 Secret Service)以及 fprintd。請使用作業系統的一般套件管理程式安裝缺少的套件,再於系統設定中登錄指紋。驗證使用目前的使用者,不需要 root 權限,也不會變更 PAM。沒有桌面鑰匙圈的無頭 SSH 工作階段會回報為無法使用;它不會在未告知的情況下將金鑰存放到其他地方。

鎖定規則

對於既有的安裝,自動鎖定預設為關閉。啟用時預設選擇 15 分鐘;支援的值為 Never、1、5、10、15、30 和 60 分鐘。應用程式視窗中的鍵盤與滑鼠輸入會視為活動;收到的 SSH 輸出則不算。選用的失去焦點時鎖定會將應用程式的外掛程式視窗視為應用程式的一部分,並允許進行中的系統驗證提示完成。變更這些規則需要主密碼。

每次 Vault 鎖定(包括閒置鎖定與失去焦點時鎖定)都會中斷作用中的 SSH 工作階段、關閉外掛程式並停止診斷。鎖定前請先儲存遠端編輯內容。這沿用了既有的手動鎖定行為;鎖定後,背景外掛程式將無法再使用任何 SSH 登入憑據。

選用的敏感操作原則,會在刪除設定檔、安裝/移除外掛程式、啟動安裝程式以及重設已解除鎖定的 Vault 時,要求重新進行系統驗證。遠端終端機指令與外掛程式的檔案編輯不在此原則範圍內。此原則無法取代 SSH 伺服器的授權。若提供者停止運作,請使用主密碼解除鎖定,並以該密碼變更原則。在鎖定狀態的復原畫面中,經過破壞性操作的確認後,仍可執行重設。

Vault 與 IPC 設計

既有的 v1 Vault 仍使用 AES-256-GCM 與 scrypt;登錄不會重寫其檔案,也不會變更其結構。只有其衍生的 32 位元組金鑰的副本會進入作業系統的認證儲存區。明文主密碼絕不會被儲存。本機登錄中繼資料包含隨機的認證 ID、提供者,以及與 Vault 不可變中繼資料綁定的 SHA-256。復原出的金鑰必須先通過經驗證的解密,才能開啟工作階段。主要程序的緩衝區在使用後會被清除;原生通訊協定字串只會短暫存在於程序記憶體中,並不代表在受控執行環境中能夠完全清除記憶體。

輔助程式透過受限的私有 stdin/stdout 管道通訊,不接受 shell 指令,具備驗證逾時,並傳回經過清理的錯誤代碼。輔助程式封裝於 ASAR 之外的 resources/biometrics 中;它們是獨立的原生執行檔,因此不需要 Electron ABI 原生模組。Linux 輔助程式使用系統 Python 與 GI。原生物件與衍生金鑰絕不會跨越轉譯器/外掛程式橋接層。生物辨識 IPC 會驗證目前的主視窗及其主框架;外掛程式無法呼叫它。明確鎖定會取消待處理的生物辨識與密碼解除鎖定作業,因此延遲送達的核准無法重新開啟 Vault。即使作業系統的儲存區處於離線狀態,移除登錄也會撤銷其本機綁定;無法存取的儲存區中可能會殘留一個無法使用的孤立認證。

建置與驗證

npm run biometrics:build 會為目前的主機平台準備輔助程式;開發啟動與發行準備會自動呼叫它。macOS 需要具備 Security 與 LocalAuthentication 的 Swift/Apple SDK;Windows 需要 Visual Studio C++ Build Tools、Windows SDK 與 C++/WinRT;Linux 則會複製 Python 輔助程式。不會新增任何 npm 相依套件。請在每個目標作業系統上以原生方式建置。macOS 輔助程式包含在遞迴的套件簽署中;由於此桌面應用程式並未在沙箱中執行,它不需要 App Sandbox 權限。正式的 macOS 散布仍需要 Developer ID 簽署與公證,這與 OpenPGP 發行簽章無關。

請執行 npm test、npm run test:biometrics:ui 與 npm run test:diagnostics:ui。生物辨識 Node 測試與隔離的 UI 冒煙測試使用模擬的作業系統配接器,涵蓋成功、拒絕/取消、錯誤金鑰、缺少硬體/登錄、重設、逾時與延遲結果、Linux 鑰匙圈無法使用、作業系統認證失敗、Windows 經 PIN 碼核准的回應、macOS 登錄變更、與既有 Vault 的相容性、IPC 隔離以及 SSH 清理。這並不能證明硬體驗證能夠成功。

已在 macOS arm64 與 Windows x64 上驗證原生編譯。macOS 回報 Touch ID 可用;Windows 虛擬機器回報 Hello 無法使用。指紋/臉部/PIN 碼登錄、實際取得受保護的金鑰、取消作業系統對話框,以及登錄變更造成的失效,仍需在每個支援的系統上進行互動式硬體測試。Linux 輔助程式還必須在配備支援的 fprintd 讀取器的桌面上測試;無頭虛擬機器無法完成該驗證。

平台參考資料:Apple 生物辨識存取控制、Windows 桌面 Hello 互通、fprintd 裝置生命週期、Secret Service 規格。

macOS 上 SSH 的區域網路存取

若所有本機 SSH 設定檔都因 connect EHOSTUNREACH 而失敗,但同一連線在「終端機」中可以正常運作,請檢查 System Settings → Privacy & Security → Local Network → CH-J Server Manager(系統設定 → 隱私權與安全性 → 區域網路 → CH-J Server Manager),允許存取,然後完全結束應用程式並重新開啟。若已啟用,請切換一次該權限並重新啟動。也請檢查路由、Wi-Fi/乙太網路與 VPN:僅憑此錯誤並不能證明是隱私權限遭拒。請勿因為此錯誤而重設 Vault 或捨棄受信任的 SSH 指紋。

應用程式宣告了 NSLocalNetworkUsageDescription,並為 macOS 網路權限/路由錯誤提供在地化的指引。它無法自行授予權限。Apple 建議使用由 Apple 核發的簽署身分,讓 macOS 能在不同組建之間可靠地追蹤網路隱私權限;目前的臨時 (ad hoc) Alpha 組建仍有此限制。請參閱 Apple 關於區域網路隱私權的指南。

Ubuntu 應用程式圖示

Debian 套件會以標準 hicolor 尺寸(16–512 px)安裝既有的 CH-J 圖示,並提供對應的桌面項目與 Electron 視窗類別。主視窗在重新建立時也會套用該圖示。更新已釘選的舊啟動器後,請先取消釘選,再釘選新安裝的應用程式;登出後重新登入桌面可以重新整理過時的 GNOME 啟動器快取。