SSH 與 VNC 適用場景對比
決策核心:日常與自動化用 SSH;圖形除錯與介面操作用 VNC。下表從適用場景、延遲、頻寬、多用戶與權限維度對比,方便小團隊與多設備工作流選型。
| 對比維度 | SSH | VNC(螢幕共享) |
|---|---|---|
| 適用場景 | CI/CD、無頭構建、git、腳本、指令列、多設備建置/測試 | Xcode 介面、模擬器、圖形除錯、一次性 GUI 任務 |
| 延遲 | 極低,幾乎無額外延遲,適合長時間連線 | 對延遲敏感,低延遲可流暢;高延遲易卡頓 |
| 頻寬/畫質 | 文字與小量傳輸,頻寬需求低 | 完整畫面緩衝,頻寬需求較高 |
| 多用戶 | 每用戶可多個並行連線,易擴展 | 每用戶一個圖形工作階段(或共用螢幕),需注意衝突 |
| 權限模型 | 每位開發者獨立 Unix 帳號、金鑰登入,隔離清晰 | 同上,登入綁定 Unix 帳號,建議每人獨立工作階段 |
小團隊協作建議:預設 SSH 為主、VNC 為輔,僅在需要圖形桌面時開啟 VNC,並設定閒置逾時。
權限與隔離配置要點
共享構建機上要同時做到「每人獨立空間」與「可共用構建快取」,權限與隔離配置是關鍵。要點如下:
- 每位開發者一個 Unix 帳號: 於「系統設定 → 使用者與群組」或
dscl建立,勿使用共用通用帳號。 - 僅允許 SSH 金鑰登入: 在
/etc/ssh/sshd_config設定PasswordAuthentication no、PubkeyAuthentication yes,重啟sshd。 - 共享群組與 setgid 共用卷: 新增群組(如
builders),將使用者加入;對共用目錄使用chmod 2775(setgid),新檔案繼承群組,避免寫入他人目錄。 - Keychain 與簽名隔離: CI/簽名使用獨立 Keychain,勿用登入 Keychain;無頭構建時以
security unlock-keychain解鎖,避免圖形密碼提示。 - VNC 僅必要時開啟: 每人使用自己的帳號登入螢幕共享,避免共用同一工作階段。
共享構建機最佳實踐
在「一台遠端 Mac、多人協作」的前提下,建議:
- 以 SSH 承載主要工作流: 建置、測試、部署、腳本與 CI 皆走 SSH,減少對圖形層的依賴。
- 共用目錄僅放可共享資源: 如 DerivedData 快取、SPM 快取等,用 setgid 與群組權限控制;個人專案與密鑰放在各自 home 下。
- 資源與排程: 若多人同時重度構建,可搭配排程或任務佇列(如站內 OpenClaw/Meshmac 多節點協作)分散負載。
- 文件化連線與權限流程: 將 SSH 金鑰、VNC 開啟方式、共用路徑寫進團隊維基或幫助中心,方便新成員上手。
常見問題與排錯入口
SSH 連線失敗: 確認 sshd 已啟動、防火牆允許 22 埠、~/.ssh/authorized_keys 權限為 600、金鑰格式正確。若為託管服務,依幫助中心取得主機與埠。
VNC 卡頓或無法連線: 檢查「系統設定 → 一般 → 共享」中「螢幕共享」已開啟;高延遲環境建議改用 SSH 完成多數操作,VNC 僅短暫使用。
多用戶權限衝突: 確保每人獨立帳號、共用目錄使用 setgid 與群組,避免寫入他人目錄;簽名與 Keychain 勿共用。
無頭構建彈出密碼框: 改用專用 Keychain 並以 security unlock-keychain 在腳本中解鎖,勿依賴登入 Keychain。
更多細節可參考站內 遠端 Mac 共享構建機 SSH 與 VNC 選型及權限隔離實戰、租用遠端 Mac 構建節點權限管理與避坑指南。
選型清單
決策時可依下列清單勾選,確保不遺漏關鍵項。
- □ 主要用途為 CLI/自動化/CI → 以 SSH 為主
- □ 需要圖形桌面(Xcode、模擬器、除錯)→ 必要時使用 VNC
- □ 延遲與頻寬:低延遲、省頻寬 → SSH 較適合
- □ 多用戶:每人獨立 Unix 帳號、金鑰登入已啟用
- □ 共用目錄:setgid、群組權限正確,不寫入他人目錄
- □ CI/簽名:專用 Keychain,無頭構建不彈密碼框
- □ VNC:僅必要時開啟、每人獨立工作階段、建議閒置逾時
完成以上清單後,即可依團隊規模選擇「單機共享」或「多節點協作」方案,並對照站內購買頁與幫助中心完成連線與權限設定。