SSH:適合可重複、可記錄的任務
安裝相依套件、提取程式碼、編譯、測試、檢查日誌與驗證檔案都適合使用 SSH。網路短暫波動時,可透過 tmux、screen 或 CI Runner 讓任務持續在裝置端執行。
- 適合 xcodebuild、fastlane 與指令碼化流程
- 命令、輸出內容與錯誤碼容易保留在日誌中
- 大多數操作不需要持續傳輸桌面畫面
命令列建置、自動化指令碼與長時間任務優先使用 SSH。需要操作 Xcode、檢查圖形輸出或處理桌面應用程式時,再從控制台的裝置詳細資料進入瀏覽器遠端工作階段。
DplyMini 提供雲端 Mac 獨享實體機。每筆訂單對應一個實體節點,裝置不是虛擬機器。連線前先核對主機位址、使用者名稱與主機指紋,再開始傳輸專案或執行建置。
連線方式不會改變裝置設定,但會影響操作效率、網路敏感度與工作階段恢復方式。讓持續任務在背景執行,把圖形工作階段留給必須看見桌面的步驟。
安裝相依套件、提取程式碼、編譯、測試、檢查日誌與驗證檔案都適合使用 SSH。網路短暫波動時,可透過 tmux、screen 或 CI Runner 讓任務持續在裝置端執行。
需要開啟 Xcode、檢查模擬器畫面、調整圖形工具或確認桌面應用程式狀態時,請從控制台的裝置詳細資料啟動遠端工作階段。持續建置不應依賴瀏覽器分頁一直開啟。
簡單判斷:能以命令表達且需要重複執行的步驟,優先使用 SSH;只有必須觀察或操作 macOS 圖形介面的步驟,才使用瀏覽器遠端存取。
不要取得位址後就立即嘗試多個使用者名稱,或反覆接受未知指紋。先在控制台的裝置詳細資料確認交付資訊,再由本機終端機建立連線。
每位操作者使用自己的金鑰,不要在團隊成員之間複製私密金鑰。建議使用現代金鑰類型,並為私密金鑰設定本機保護密語。
ssh-keygen -t ed25519 -C "deploymini-access"
公開金鑰通常來自 ~/.ssh/id_ed25519.pub。私密金鑰檔案不得上傳、貼到聊天記錄,也不要放入程式碼儲存庫或工單附件。
cat ~/.ssh/id_ed25519.pub
位址、連接埠與使用者名稱以目前訂單的裝置詳細資料為準。不要沿用其他訂單的連線命令,也不要依節點名稱自行猜測位址。
ssh -p <port> <user>@<host>
終端機首次詢問是否信任主機時,先將顯示的指紋與裝置詳細資料提供的資訊逐段比對。資訊不一致時停止連線並提交工單,不要直接輸入 yes。
SHA256:<fingerprint-from-device-details>
成員離開專案、裝置移交或臨時協作結束後,應立即刪除對應的公開金鑰。不要讓一把長期共用金鑰覆蓋整個團隊。
可在本機 SSH config 中為裝置設定別名,但主機、連接埠與使用者名稱仍應以控制台目前提供的交付資訊為準。
若已知主機項目突然變更,先確認訂單或位址是否變更。確認前不要直接刪除舊記錄並接受新指紋。
以下示範一次典型 SSH 工作階段。實際位址、使用者名稱、專案路徑、Scheme 與匯出設定由你的訂單和專案決定,不要直接複製範例參數。
$ ssh -p <port> <user>@<host>
The authenticity of host cannot be established.
ED25519 key fingerprint is SHA256:<fingerprint>
Are you sure you want to continue connecting? yes
Connected to dedicated physical Mac mini
$ sw_vers
ProductName: macOS
ProductVersion: <installed-version>
$ cd ~/work/ExampleApp
$ xcodebuild \
-workspace ExampleApp.xcworkspace \
-scheme ExampleApp \
-configuration Release \
build
** BUILD SUCCEEDED **
$ bundle exec fastlane ios build
[fastlane] Resolving project configuration
[fastlane] Running archive workflow
[fastlane] Build artifacts ready for verification
$ shasum -a 256 ./output/ExampleApp.ipa
<checksum> ./output/ExampleApp.ipa
保留 macOS、Xcode、Ruby、相依套件管理工具與專案提交版本。出現差異時,先比較環境記錄,而不是立即重新安裝所有相依套件。
記錄輸出路徑、檔案大小、校驗值與重要建置日誌。下載完成後在接收端再次計算校驗值,確認傳輸過程沒有變更。
一次只驗證一個層級,並記錄每一步的結果。如此可判斷問題發生在本機解析、出口網路、存取規則、驗證資訊或裝置端服務。
確認連線命令使用裝置詳細資料目前提供的主機位址。若使用主機名稱,先檢查是否能解析到預期位址,並排除本機 hosts 覆寫。
nslookup <host>
確認目前網路允許建立外部連線。企業網路、訪客 Wi-Fi、代理伺服器或 VPN 可能改變出口路徑,可切換到已知正常的網路進行比較。
traceroute <host>
核對訂單提供的連接埠,檢查本機安全軟體與組織網路政策是否攔截。不要假設所有裝置都使用預設 SSH 連接埠。
nc -vz <host> <port>
區分「無法連線至連接埠」與「驗證失敗」。驗證失敗時檢查使用者名稱、公開金鑰路徑、金鑰權限與 ssh-agent,不要透過連續嘗試不同密碼來排查。
ssh -vv -i ~/.ssh/id_ed25519 <user>@<host>
連接埠可達但工作階段立即中斷時,記錄斷線前的完整錯誤提示。若瀏覽器工作階段異常,也要確認 SSH 是否仍可連線,以區分圖形通道與裝置整體狀態。
Connection reset | timeout | permission denied
最後回到控制台核對訂單、節點與裝置資訊。所有節點全年 365 天正常運作;實際連線可用狀態以控制台即時回傳為準。
不要把 ping 作為唯一結論。部分網路會限制 ICMP,但 SSH 目標連接埠仍可正常建立連線。判斷時應同時記錄解析結果、目標連接埠測試與 SSH 詳細輸出。
獨享實體機可減少資源爭用,但不會取代團隊內部的存取控制。金鑰、臨時憑證、專案資料與遠端桌面仍需依最小權限原則管理。
從個人金鑰開始,以主動撤銷結束。
支援人員排查連線問題不需要你的私密金鑰。不要透過電子郵件、聊天記錄、程式碼儲存庫或工單附件傳送任何私密金鑰內容。
保留錯誤類型、命令參數結構、發生時間與用戶端版本,將主機位址、使用者名稱、專案名稱及敏感值替換為明確的佔位符。
瀏覽器圖形介面的流暢度主要受往返延遲、抖動與可用頻寬影響。編譯速度則更多取決於專案、快取與裝置設定,兩者應分開判斷。
選擇與團隊、程式碼儲存庫及產物儲存服務之間整體連線較合適的節點。短時間的最低延遲不代表整個工作階段穩定,抖動與封包遺失同樣會影響輸入體驗。
素材、模型與建置產物應分批傳輸。傳輸前後記錄檔案數量、總大小與校驗值,失敗時只重新傳輸有差異的部分。
長時間編譯、測試與編碼任務應在裝置端背景執行,並將日誌寫入檔案。即使關閉瀏覽器或本機網路波動,任務也不應因此中斷。
若無法依前述順序定位連線問題,請在控制台為對應訂單提交工單。資訊越完整,支援佇列越容易重現問題並判斷其所在層級。
先選擇設定與五個節點之一,完成訂單後在控制台核對連線資料。首次登入時依本頁順序驗證主機位址、使用者名稱與指紋。