收到憑證郵件後,5 分鐘內你應該已經在遠端桌面裡了。這頁把圖形連線、命令列連線、延遲數據與安全性強化一次講完,照順序做即可。
每台 Mac mini 交付時預設開啟 VNC(5900)與 SSH(22)雙通道,憑證會在同一封加密郵件裡。Tailscale 是選配項目,自行安裝、自行管理。
看到完整 macOS 桌面。適合安裝憑證、點 Xcode 圖形介面、剪 4K 影片這類離不開滑鼠的工作。頻寬建議 ≥10Mbps。
跑建置腳本、註冊 CI runner、rsync 傳檔案的主要通道。對延遲不敏感,2G 網路也能用,是我們推薦的日常方式。
把雲端 Mac 拉進你的私人網路,內網 IP 直連,不暴露公網通訊埠。你擁有完整管理員權限,brew 一行就能裝好。
| 方式 | 協定 / 埠 | 適合 | 不適合 | 延遲敏感度 |
|---|---|---|---|---|
| VNC | RFB / 5900 | 圖形操作、安裝憑證、模擬器互動、影片剪輯 | 長時間自動化工作 | 高,建議 <120ms |
| SSH | SSH / 22 | 腳本、CI runner、檔案同步、tmux 長時間工作 | 必須點圖形介面的一次性設定 | 低,300ms 也堪用 |
| Tailscale | WireGuard / UDP | 多裝置連線、關閉公網通訊埠後的通道底座 | 不想多裝軟體的極簡場景 | 隨底層線路而定 |
如果你本機也是 Mac,什麼都不用裝。在 Finder 按下 ⌘K(前往 → 連接伺服器),輸入憑證郵件裡的位址,格式如下,然後輸入 VNC 密碼即可。
新增連線時填入 節點IP:5900,Encryption 選 Prefer on,Picture quality 先用 Automatic,連上後再依下表手動調整。Scaling 建議 100%,避免二次縮放導致文字模糊。
首次連線如出現指紋確認提示,先核對憑證郵件末尾的主機指紋再按接受。密碼輸錯 5 次會觸發 60 秒鎖定,這是預設的防暴力破解機制,並非故障。
# Finder ⌘K,或直接在終端機開啟
$ open vnc://203.0.113.10:5900
# 解析度依連線調整(於遠端執行)
$ displayplacer "id:main res:1920x1080 hz:60"
✓ connected: mini-tokyo-07 (M4, 24GB)
VNC 的操作手感由「解析度 × 色深 × 壓縮品質」三個變數決定。原則:先降解析度,再降色深,最後才動壓縮品質——壓縮帶來的雜訊比低解析度更影響閱讀程式碼。
| 檔位 | 解析度 | 色深 | JPEG 品質 | 估算頻寬 | 適用網路 |
|---|---|---|---|---|---|
| 流暢優先 | 1280×720 | 16-bit | 4/9 | 3~5 Mbps | 4G 熱點、跨洋線路 |
| 均衡(預設建議) | 1920×1080 | 16-bit | 6/9 | 8~12 Mbps | 家用寬頻、鄰近節點 |
| 畫質優先 | 2560×1440 | 24-bit | 9/9 | 20~35 Mbps | 有線千兆 + 延遲 <60ms |
色深從 24-bit 降到 16-bit 約可省下 40% 頻寬,寫程式時肉眼幾乎無差異;剪輯調色時再切回 24-bit。
下單時上傳過 SSH 公開金鑰的話,交付即可直接以金鑰連線。沒上傳也沒關係,先用郵件裡的初始密碼登入,再依照第一個終端機區塊把密碼登入關掉。
# 本機:把公開金鑰推上去(首次以密碼驗證)
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@203.0.113.10
# 遠端:關閉密碼登入
$ sudo sed -i '' 's/^#\{0,1\}PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
$ sudo launchctl kickstart -k system/com.openssh.sshd
✓ 此後僅接受金鑰驗證
# 增量上傳專案目錄(可續傳)
$ rsync -avzP --exclude .git ./MyApp admin@203.0.113.10:~/work/
# 把遠端目錄掛載到本機(需要 macFUSE)
$ sshfs admin@203.0.113.10:/Users/admin/work ~/remote-work
# 用完卸載
$ umount ~/remote-work
# 開一個工作階段跑完整封存建置
$ tmux new -s build
$ xcodebuild archive -scheme MyApp -destination 'generic/platform=iOS'
# 按 Ctrl-b d 脫離,斷線也不會中斷
# 回來再接上
$ tmux attach -t build
~/.ssh/config 裡替節點取別名並加上 ServerAliveInterval 30,之後打 ssh tokyo 兩個字就能直連,順便解決 NAT 逾時斷線的問題。選節點前先看這張表:數值是 ICMP ping 中位數(毫秒),越低越靈敏。經驗判斷:<60ms 拖曳操作接近本機手感,60~120ms 日常開發沒問題,>150ms 建議純 SSH 或無頭模式。
| 發起城市 | → 東京節點 | → 首爾節點 | → 矽谷節點 | 建議 |
|---|---|---|---|---|
| 北京 | 52 | 46 | 152 | 首選首爾,東京互備 |
| 上海 | 38 | 42 | 148 | 首選東京 |
| 深圳 | 48 | 44 | 158 | 首爾與東京皆可 |
| 東京 | 2 | 34 | 108 | 當地直連 |
| 首爾 | 33 | 2 | 132 | 當地直連 |
| 新加坡 | 68 | 74 | 168 | 東京稍優,VNC 建議用均衡檔位 |
| 洛杉磯 | 102 | 128 | 6 | 首選矽谷 |
想自己重測:各節點的測試 IP 與 mtr 用法在 遇到問題 頁面的網路自我檢測章節,並附上路由追蹤提交工單的範本。
物理距離沒有軟體解法。上表 40ms 與 150ms 的差距,任何壓縮參數都補不回來。亞洲用戶預設東京或首爾節點,美洲用戶預設矽谷節點。
線路狀況一般時把 VNC 切到「流暢優先」檔位:16-bit 色深 + 中等 JPEG 品質,畫面速率通常能從 12fps 拉回 25fps 以上,捲動程式碼不再拖影。
2.4GHz Wi-Fi 的抖動常見 ±30ms,有線可壓到 ±3ms。VNC 對抖動比對絕對延遲更敏感——平均 50ms 但抖動大,體感反而比穩定的 80ms 還差。
編譯、打包、傳檔案全部走 SSH 在背景執行,VNC 只留給必須動滑鼠的操作。畫面不刷新,頻寬自然讓給資料傳輸。
這台機器是你獨享的實體節點,強化責任也在你身上。依順序完成這五項,公網暴露面基本就收乾淨了。
/etc/ssh/sshd_config 裡的 Port 22 改成高位埠(例如 2222),自動化掃描流量立減九成。brew install fail2ban 後啟用 sshd jail,預設失敗 5 次封鎖 10 分鐘,對 CI 無感。# 本機建立通道:遠端 5900 對應到本機 5901
$ ssh -N -L 5901:localhost:5900 admin@203.0.113.10
# 另開視窗,連本機埠即可
$ open vnc://localhost:5901
✓ VNC 流量全程走 SSH 加密
如果這台機器只做 self-hosted runner,建議全程不開圖形工作階段:更少暴露面、更少記憶體佔用、零 VNC 頻寬。
svc.sh 會產生 LaunchDaemon,開機自動啟動、當機自動重啟,斷線後自動重連。security unlock-keychain,簽署不再依賴圖形工作階段的彈出視窗。# 關閉畫面共享(需要時隨時可以再開)
$ sudo launchctl disable system/com.apple.screensharing
# 註冊並常駐 GitHub Actions runner
$ ./config.sh --url https://github.com/org/repo --token XXXX
$ sudo ./svc.sh install && sudo ./svc.sh start
# 建置前解鎖簽署用鑰匙圈
$ security unlock-keychain -p "$KC_PASS" ci.keychain-db
✓ runner online, no GUI session
依症狀對照,先跑一行指令修復再說;修不好的話,附上現象與已嘗試的步驟送出工單,首次回應在 2 小時內。
| 症狀 | 最常見原因 | 一行修復 |
|---|---|---|
| VNC 黑畫面 | 畫面共享服務異常退出 | sudo launchctl kickstart -k system/com.apple.screensharing |
| VNC 卡頓掉格 | 畫質檔位超出線路承載 | 色深切到 16-bit,JPEG 品質降到 4/9,解析度降到 1280×720 |
| SSH 連線逾時 | 埠改過後仍連 22,或本機防火牆擋住 | ssh -p 2222 admin@203.0.113.10 -v 查看握手卡在哪一步 |
| SSH 拒絕金鑰 | 本機私鑰權限過於寬鬆 | chmod 600 ~/.ssh/id_ed25519 |
| SSH 頻繁斷線 | NAT 閒置逾時切斷長連線 | printf "ServerAliveInterval 30\n" >> ~/.ssh/config |
| 剪貼簿不同步 | 遠端剪貼簿服務卡住 | SSH 執行 killall pboard,系統會自動重啟該服務 |
| 通道連不上 5901 | 通道行程已退出 | 重新執行 ssh -N -L 5901:localhost:5900 admin@203.0.113.10 |
更完整的逐步排查(含 Xcode 簽署失敗、鑰匙圈解鎖)在 故障排查手冊
付款後 10 分鐘內交付 VNC/SSH 憑證,按天計費,7 天內按未使用天數退款。