SSH:建置、指令碼與 runner 首選
適合執行 Git、Xcode 命令列工具、Fastlane、相依套件安裝、日誌收集與 self-hosted runner 工作。連線前請準備本機 SSH 用戶端、受保護的私密金鑰、節點主機名稱、連接埠、使用者名稱與可信任的主機指紋。
- 私密金鑰檔案僅限目前使用者讀取
- 本機網路允許存取訂單回傳的連接埠
- 首次連線前透過獨立管道核對指紋
- 自動化工作使用獨立金鑰並限制用途
SSH 用於命令列、自動化與建置工作,VNC 用於圖形桌面操作。先核對節點資訊與主機指紋,再建立工作階段、驗證工具鏈並記錄結果。
不要從聊天記錄或不明來源複製主機指紋。請以控制台目前訂單回傳的資訊為準。
兩種方式連接同一台獨享實體 Mac,但用途不同。自動化流程優先使用 SSH;需要檢查圖形介面、解析度或桌面應用程式時使用 VNC。
適合執行 Git、Xcode 命令列工具、Fastlane、相依套件安裝、日誌收集與 self-hosted runner 工作。連線前請準備本機 SSH 用戶端、受保護的私密金鑰、節點主機名稱、連接埠、使用者名稱與可信任的主機指紋。
適合操作 macOS 圖形介面、檢查鍵盤配置、確認解析度,以及驗證需要桌面工作階段的工作。連線前請準備可信任的 VNC 用戶端、節點位址、臨時憑據與明確的剪貼簿策略。
不要跳過主機指紋驗證。連線成功只代表連線路徑可達,工具鏈、目錄權限與退出流程仍需分別確認。
在控制台開啟目前訂單,記錄主機名稱、連接埠、使用者名稱、臨時憑據或金鑰說明,以及系統回傳的主機指紋。
驗收:欄位來自同一筆訂單,節點與租用期間一致首次 SSH 連線顯示指紋時,逐段與控制台資訊比對。若不一致,請停止連線,不要透過忽略警告或清除記錄來繞過。
驗收:演算法與指紋文字完全一致完成首次登入後,依交付說明修改臨時憑據,登錄自己的公開金鑰,並移除不再需要的臨時存取資料。
驗收:新工作階段可用,舊臨時資料不再使用執行系統版本、Xcode 版本、磁碟空間與工作目錄寫入檢查,再執行一個可重複的小型建置工作並正常退出。
驗收:連線、工具鏈、寫入、工作與退出均有結果以下主機名稱、使用者名稱與工作名稱均為範例。實際連線參數只從控制台讀取,不要將正式環境憑據寫入指令碼、建置日誌或工單。
$ ssh -p 22022 developer@host.example
The authenticity of host cannot be established.
ED25519 key fingerprint is SHA256:<compare-with-console>
Are you sure you want to continue connecting (yes/no)? yes
Last login: current session
developer@cloud-mac % xcodebuild -version
Xcode 16.x
Build version 16X000
developer@cloud-mac % fastlane test
[✓] Preparing build environment
[✓] Resolving project dependencies
[✓] Test task completed
developer@cloud-mac % exit
Connection to host.example closed.
首次進入圖形桌面後,依固定順序檢查顯示、輸入、資料交換與工作階段復原。每項都應在中斷連線並重新連線後重現。
選擇能完整顯示工具列與對話方塊的解析度。不要只確認桌面是否清晰,還要開啟實際開發工具,檢查文字、側邊欄與彈出視窗是否被裁切。
在一般文字欄位中驗證字母、數字、符號與常用快速鍵。若本機與遠端配置不同,請先統一配置,再開始編輯程式碼或輸入指令。
只有在工作確實需要時才啟用剪貼簿同步。不要複製私密金鑰、權杖或完整環境變數;在共用裝置上應關閉雙向同步並清除歷史記錄。
確認離開裝置後桌面會進入鎖定狀態。團隊共用終端裝置時,操作結束後主動鎖定,不要以網路中斷取代工作階段保護。
主動中斷一次並重新連線,確認工作階段狀態符合預期。對長時間建置工作,請使用可與互動式連線分離的工作管理方式。
退出後刪除已儲存的主機記錄、快取憑據與臨時下載檔案。瀏覽器、VNC 用戶端與密碼管理工具都要分別檢查。
本機連接埠轉送可讓本機工具透過 SSH 工作階段存取遠端服務,無須將服務監聽位址暴露給更大的網路。連接埠、目標位址與持續時間都應有明確界線。
ssh \
-L 127.0.0.1:9000:127.0.0.1:9000 \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-p 22022 \
developer@host.example
接入 GitLab CI 等系統時,不要直接移植完整正式環境流程。先註冊 runner、固定標籤、驗證目錄權限,再執行不含敏感資料的小型測試工作。
使用獨立的服務身分完成註冊,記錄 runner 名稱、執行器、工作目錄與所屬專案。註冊權杖只在必要步驟中使用,不要寫入儲存庫。
結果:runner 在線標籤描述實際能力,例如 macOS、arm64 與專案用途。避免使用意義寬泛的預設標籤,防止不相關工作被排程到該節點。
結果:工作可精準配對檢查複製、快取、建置產物與臨時目錄的讀寫權限。工作身分不應取得超出工作目錄所需的系統權限。
結果:目錄讀寫受控首輪只執行環境輸出、相依套件解析與小型測試。確認退出碼、日誌完整性、快取路徑,以及失敗時的清理行為。
結果:工作可重複執行| 檢查項目 | 執行方式 | 通過條件 | 失敗時先查 |
|---|---|---|---|
| 架構與系統 | uname -m | 輸出與工作標籤一致 | runner 標籤與執行節點 |
| Xcode 工具鏈 | xcodebuild -version | 可讀取版本,指令退出碼為 0 | 指令路徑與工作環境 |
| 工作目錄 | 建立、讀取並刪除測試檔案 | 僅目標目錄可依需求讀寫 | 目錄擁有者與權限 |
| 快取行為 | 連續執行兩次相同測試 | 快取命中可解釋且不跨專案 | 快取金鑰與清理策略 |
一次只驗證一個變數。不要同時更換主機名稱、連接埠、金鑰與網路,否則即使恢復連線,也無法確認根本原因。
確認使用控制台目前回傳的主機名稱,並檢查解析結果是否穩定。不要從舊工單或歷史指令碼複製位址。
核對連接埠數字與協定,測試本機到目標連接埠是否可達。若公司網路有限制,請使用另一條受信任網路交叉驗證。
確認用戶端實際載入的金鑰檔案、檔案權限與對應公開金鑰。啟用詳細日誌時先移除敏感資訊,再檢查驗證順序。
指紋變更時先停止連線並重新核對節點資訊。不要直接刪除已知主機記錄後繼續登入。
檢查是否存在未退出的桌面工作階段、長時間工作或本機連接埠轉送。先確認工作狀態,再決定是否結束程序。
最後檢查代理伺服器、防火牆、VPN、無線網路品質與出口策略。使用受信任的替代網路重測,以區分本機連線與節點問題。
中斷遠端視窗並不代表完整離場。請退出工作階段、撤銷存取資料、清理敏感檔案、確認備份,並核對訂單租用期間。
結束 SSH、VNC、本機連接埠轉送與 runner 互動工作階段,確認沒有遺留的測試程序或背景監聽連接埠。
移除臨時公開金鑰、測試 runner 憑據與一次性存取資料;保留項目應有明確擁有者與後續用途。
檢查 shell 歷史記錄、臨時目錄、建置日誌、下載目錄、剪貼簿歷史與工作區中的設定檔,刪除不應繼續保留的內容。
確認程式碼與必要產物已移出,並在獨立位置完成一次讀取驗證。不要把節點上的單一檔案副本當作備份。
在控制台確認到期時間、續租狀態與服務記錄。需要繼續使用時,先確認租用期間,再安排後續建置工作。
三種在售配置涵蓋命令列建置、圖形桌面、CI/CD runner 與平行工作。實際可用狀態以控制台即時回傳為準。