SSH:建置、自動化與日誌
適合執行 xcodebuild、fastlane、安裝相依套件、同步儲存庫、檢查日誌與背景腳本。網路短暫抖動時,可搭配工作階段保持工具,讓遠端工作繼續執行。
- 適合
- 命令、腳本、持續建置
- 優點
- 頻寬使用量低,診斷資訊完整
- 限制
- 不提供 macOS 圖形介面
同一台雲端 Mac 可以同時處理命令列與圖形工作。穩定的做法是讓 SSH 負責長時間工作與診斷,讓 VNC 負責必須看見桌面的操作。
適合執行 xcodebuild、fastlane、安裝相依套件、同步儲存庫、檢查日誌與背景腳本。網路短暫抖動時,可搭配工作階段保持工具,讓遠端工作繼續執行。
適合使用 Xcode 圖形介面、模擬器、素材管理、剪輯時間軸及其他必須觀察桌面狀態的工作。延遲較高時,應先降低畫質與解析度,而不是反覆重新連線。
不要沿用其他訂單的位址或連接埠。每次都以目前服務在控制台顯示的連線資料為準。
在目前服務詳情中複製主機位址與 SSH 連接埠。位址、連接埠與節點共同構成連線目標;切換節點或服務後,應重新核對。
使用者名稱必須與連線資料完全一致。不要將本機電腦使用者名稱、儲存庫帳號或團隊成員名稱代入 SSH 命令。
私密金鑰檔案只能由目前的本機使用者讀取。在 macOS 或 Linux 上可執行 chmod 600 ~/.ssh/lemonvm_key,再使用 -i 指定檔案。
首次連線出現主機指紋時,先與控制台顯示的資訊核對。只有內容一致時才寫入 known_hosts,不要直接略過檢查。
將 Host、HostName、User、Port 與 IdentityFile 寫入本機 SSH 設定,可減少手動輸入錯誤,但不要將私密金鑰內容寫入設定檔。
ssh -i ~/.ssh/lemonvm_key -p 連接埠 使用者名稱@主機位址
首次連線從中等畫質與較低解析度開始。確認輸入、剪貼簿與視窗切換正常後,再依目前線路餘裕調整顯示參數。
使用控制台提供的 VNC 主機與連接埠,不要沿用 SSH 連接埠。若用戶端要求組合位址,請依用戶端格式填寫主機與連接埠。
優先確保滑鼠、鍵盤與視窗回應。文字清晰度足夠後再提升色彩與影像品質,避免首次連線就佔滿頻寬。
高解析度會增加每影格的傳輸量。網路較弱時,先使用單一顯示器與較低解析度,穩定後再調整遠端桌面尺寸。
連線後先用一段不含敏感資訊的文字測試雙向複製。不要透過共用剪貼簿傳送私密金鑰、完整存取權杖或長期憑證。
記下用戶端退出全螢幕及釋放鍵盤擷取的快速鍵,避免遠端組合鍵被本機系統攔截後誤判為工作階段異常。
VNC 畫面停滯時,先透過 SSH 檢查負載與網路。SSH 仍能連線通常表示實體節點在線,問題更可能位於圖形工作階段或網路鏈路。
診斷時一次只變更一個變數。先確認 SSH 交握,再觀察網路探測,最後執行一個可驗證的遠端命令。這樣能區分憑證、連接埠、鏈路與工作環境問題。
Connecting to 後沒有回應:檢查位址、連接埠與本機出口限制。$ ssh -v -p 連接埠 使用者名稱@主機位址
debug1: Connecting to host [位址] port [連接埠]
debug1: Server host key: SHA256:[指紋]
debug1: Authentication succeeded (publickey)
$ ping -c 5 主機位址
5 packets transmitted, 5 packets received
round-trip min/avg/max = 41.2/44.8/49.1 ms
$ ssh lemon-node "xcodebuild -version"
Xcode [目前版本]
Build version [目前建置編號]
$ ssh lemon-node "cd ~/project && xcodebuild build"
** BUILD SUCCEEDED **
下表用於觀察不同接入地點至新加坡、東京、首爾、香港與美國西部的相對差異。互動式 VNC 更重視延遲與抖動,背景建置則更重視連線穩定性與持續吞吐量。
| 接入地點與電信業者 | 新加坡 | 東京 | 首爾 | 香港 | 美國西部 |
|---|---|---|---|---|---|
| 上海 · 中國電信 | 68 ms | 42 ms | 51 ms | 35 ms | 146 ms |
| 北京 · 中國聯通 | 91 ms | 54 ms | 46 ms | 58 ms | 139 ms |
| 深圳 · 中國移動 | 53 ms | 67 ms | 76 ms | 24 ms | 168 ms |
| 台北 · 固定寬頻 | 62 ms | 39 ms | 48 ms | 31 ms | 126 ms |
| 洛杉磯 · 企業光纖 | 171 ms | 112 ms | 124 ms | 143 ms | 27 ms |
閱讀方式:同一接入地點優先比較橫向數值;用於 VNC 時,也要持續觀察抖動與封包遺失。實際連線品質取決於本機 Wi-Fi、電信業者出口、跨境路由與背景傳輸。
不要同時切換節點、變更畫質與重新啟動用戶端。依照以下六個步驟逐項確認,每一步都記錄調整前後的延遲、封包遺失或操作回應。
改用有線網路或穩定的 5GHz Wi-Fi,暫停本機下載與雲端同步。若同一區域網路內的其他裝置也出現抖動,先處理本機鏈路。
連續探測至少數分鐘,區分穩定的高延遲與間歇性封包遺失。短暫尖峰更可能造成 VNC 滑鼠跳動與畫面停頓。
在新加坡、東京、首爾、香港與美國西部中,選擇更接近主要存取方向的節點。團隊應以主要操作者或建置相依項目所在的方向為準。
先降低色彩品質、壓縮等級或影格率,觀察輸入回應是否改善。畫面清晰但操作延遲高時,不要只提高頻寬設定。
暫時切換至單一螢幕與較低解析度。若回應明顯改善,表示每影格資料量已超過目前線路適合的範圍。
檢查儲存庫拉取、相依套件下載、素材上傳、產物回傳與遠端同步工作。大型檔案傳輸應與即時 VNC 操作錯開執行。
遠端連線的安全邊界由本機金鑰、初始憑證、工作階段鎖定與團隊交接共同構成。不要將長期存取資料貼到公開聊天室或儲存庫。
為不同裝置使用獨立金鑰,私密金鑰只保存在受控終端。裝置退出團隊或遺失後,請及時移除對應的公開金鑰。
首次登入完成環境核對後,更新臨時憑證。不要在腳本、建置日誌或儲存庫設定中留下可直接使用的存取資料。
暫時離開時鎖定遠端桌面,不要關閉仍在執行的背景工作。共用工作空間也應同時鎖定本機電腦。
多人協作時記錄誰在什麼時間執行工作,不要共用同一把長期金鑰。交接時說明工作狀態、日誌位置與待處理步驟。
VNC 畫面消失不代表實體節點停止。先使用另一個連線通道確認狀態,避免重複啟動建置、覆寫輸出或中斷仍在執行的工作。
先檢查本機網路,再測試目標主機與連接埠。網路恢復後重新連線,並查看工作日誌與程序狀態,不要直接重複執行原命令。
確認項目:本機出口、目標連接埠、最近日誌時間透過控制台檢查目前服務狀態,再使用 SSH 驗證系統回應。恢復後檢查電源與工作階段設定,避免長時間工作期間進入不適當的睡眠狀態。
確認項目:SSH 回應、系統時間、執行中的程序降低顯示參數並重新建立圖形工作階段。在確認工作狀態前不要重新啟動整台節點,背景建置可能仍正常執行。
確認項目:遠端負載、圖形工作階段、用戶端設定重新連線後讀取日誌、結束代碼與產物目錄。只有確認原工作已結束或失敗後,才啟動下一次建置,避免同時寫入相同的輸出位置。
確認項目:程序編號、結束代碼、產物修改時間