結論先行:Mac M4 遠端開發的瓶頸不在網路,在設定錯誤。 絕大多數卡頓、斷線、建置逾時,都來自三個可預防的環節——SSH 金鑰權限、VNC 色深與 runner 服務註冊方式。
1. 為什麼遠端 Mac 開發需要獨立方法論
雲端 Mac 與普通 VPS 有本質區別:macOS 的沙盒機制、SIP 與 Keychain 權限管理,都與 Linux 伺服器的運維邏輯不同。
理解這三點,後續所有操作都會變得順理成章。
1.1 macOS 與 Linux 運維對比
| 維度 | Linux VPS | Mac M4 雲端 |
|---|---|---|
| SSH 預設狀態 | 通常已啟用 | 需手動開啟 Remote Login |
| 憑證儲存 | 檔案系統 | Keychain(需解鎖) |
| 圖形存取 | 無原生 VNC | 內建 Screen Sharing |
| 記憶體管理 | swap 可擴充 | 統一記憶體,上限固定 |
2. SSH 設定:從零到安全連線
2.1 伺服端開啟步驟
bash
sudo systemsetup -setremotelogin on
sudo systemsetup -getremotelogin
2.2 金鑰權限
bash
ssh-keygen -t ed25519 -C "hashvps-dev" -f ~/.ssh/hashvps_ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
連線只需按 ssh hashvps-dev 即可。
3. VNC 設定
3.1 VNC 用戶端推薦
| 用戶端 | 平台 | 優勢 |
|---|---|---|
| Apple Remote Desktop | macOS | 原生加速 |
| Jump Desktop | macOS / iOS | 跨平台 |
| Royal TSX | macOS / Windows | 多工作階段 |
4. Xcode 建置節點
bash
security unlock-keychain -p "$KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db
./svc.sh install
./svc.sh start
Buildkite Agent 設定範例(點擊展開)
bash
brew tap buildkite/buildkite && brew install buildkite-agent
sudo brew services start buildkite/buildkite/buildkite-agent
5. 規格選型決策矩陣
~~不要按「核數」選機~~:記憶體才是瓶頸。
黃金法則:記憶體按峰值需求的 1.3 倍規劃。
5.1 工作負載類型對應
| 工作負載 | 推薦規格 | 記憶體 |
|---|---|---|
| 單 iOS App 建置 | M4 | 16 GB |
| 並行 simulator 測試 | M4 Pro | 24 GB |
| AI 推理 + CI 混跑 | M4 Max | 36 GB+ |
6. 儲存管理
bash
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
7. 常見故障排除
| 症狀 | 最可能原因 | 修復指令 |
|---|---|---|
| SSH 拒絕連線 | Remote Login 未啟用 | sudo systemsetup -setremotelogin on |
| 金鑰驗證失敗 | 權限不正確 | chmod 600 ~/.ssh/authorized_keys |
| Runner 離線 | 服務未註冊 | ./svc.sh install && ./svc.sh start |
快速鍵速查
- Cmd + Shift + K
- Xcode Clean Build Folder
- Cmd + B
- Xcode Build
總結
Mac M4 遠端開發環境成功率,80% 取決於:SSH 金鑰權限精確設定、VNC 虛擬解析度正確設定、runner 以 launchd 服務註冊。