ホストフィンガープリントを取得・確認する
初回接続前にED25519ホスト公開鍵を取得し、フィンガープリントを計算して引き渡し資料と照合します。確認せずに警告を無視しないでください。
ZoneMiniは専有物理サーバーを提供しており、仮想マシンではありません。SSHでビルドコマンドを実行し、macOS画面共有でGUIタスクを処理したり、固定ノードをCI Runnerとして登録したりできます。まず接続情報を確認してから入口を選び、認証情報をチャット履歴やパイプラインログに残さないでください。
3つの方法は併用できます。日常の自動化にはSSHまたはRunnerを優先し、Xcodeの画面確認、システム設定の変更、GUI診断が必要な場合だけ画面共有を使用します。
リポジトリの取得、依存関係のインストール、テスト、Xcodeのコマンドラインビルド、ログ確認、成果物の同期、ディスク容量の確認に使用します。安定したスクリプトには鍵認証を使い、ノードの別名をローカルのSSH設定に登録しましょう。
Xcodeプロジェクトの確認、GUIデバッグ、キーチェーンのアクセス権確認、表示設定の変更、アーカイブ結果の確認に使用します。作業終了時はセッションをロックし、デスクトップやクリップボードに機密情報を残さないでください。
ノードを既存のCIシステムに登録すると、リポジトリ、ブランチ、タスク種別ごとにタグを割り当てられます。Runnerには専用の作業ディレクトリと制限付きトークンを使用し、キャッシュとビルド成果物には明確な削除ルールを設定してください。
接続失敗は、ホスト障害ではなくノードアドレス、ユーザー名、ネットワークポリシー、注文ステータスの不一致が原因であることが少なくありません。以下の順番で確認すれば、試行錯誤を繰り返さずに済みます。
コンソールにログインし、インスタンスが引き渡し済みか確認します。現在の注文に対応するモデル、ノード、レンタル期間も確認してください。接続情報がそのインスタンスと一つずつ一致している必要があります。
コンソールに表示されたホストアドレスをコピーし、古いチケット、古いスクリプト、チームのチャット履歴にあるアドレスを使い回さないでください。複数ノードを使うチームでは、アドレスに用途のタグを付けましょう。
SSHのユーザー名とGUIセッションのユーザー名は、入口によって異なる場合があります。デフォルトのユーザー名を推測せず、一時パスワードをスクリプトにハードコードしないでください。
一時認証情報は初回ログイン専用です。ログインに成功したらすぐに更新し、新しい認証情報はチームが承認したパスワード管理手順で保管してください。
現在のネットワークから対象ポートへのアウトバウンド接続が許可されているか確認します。企業ネットワーク、プロキシ、セキュリティソフトがSSHやGUI接続を制限する場合があるため、事前にネットワーク管理者へ確認してください。
ノード、用途、担当者、ホストフィンガープリント、認証情報のローテーション時期を記録します。初回接続後にホストフィンガープリントの変更警告を無視しないでください。
一時認証情報、SSH秘密鍵、リポジトリトークン、署名証明書を公開質問、パイプラインの完全なログ、暗号化されていない文書に貼り付けないでください。サポート依頼には、機密情報を除去したコマンド出力だけを添付してください。
コンソールで接続情報を確認する以下のコマンドにはプレースホルダーのみが含まれ、実際のノードアドレスや認証情報は含まれていません。プレースホルダーをコンソールの情報に置き換え、信頼できるネットワーク環境で実行してください。
初回接続前にED25519ホスト公開鍵を取得し、フィンガープリントを計算して引き渡し資料と照合します。確認せずに警告を無視しないでください。
ZoneMiniノード専用の鍵ペアを作成します。秘密鍵は管理下のローカルデバイスに保管し、公開鍵をリモートの認証済み鍵リストに登録します。
SSH設定にホストアドレス、ユーザー名、鍵のパス、セッション維持パラメータを保存し、毎回の手入力や異なるノードの混同を避けます。
鍵認証でログインできることを確認してから、一時認証情報を更新します。鍵を検証する前に、唯一のログイン手段を削除しないでください。
ssh-keyscan -t ed25519 <node-address> > zonemini_hostkey
ssh-keygen -lf zonemini_hostkey
ssh-keygen -t ed25519 -f ~/.ssh/zonemini_ed25519
ssh-copy-id -i ~/.ssh/zonemini_ed25519.pub <user>@<node-address>
ssh -i ~/.ssh/zonemini_ed25519 <user>@<node-address>
Host zonemini-build
HostName <node-address>
User <user>
IdentityFile ~/.ssh/zonemini_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
画面共有は、XcodeのGUIデバッグ、システム設定の確認、アーカイブのチェックに適しています。ビルドスクリプト、ログ収集、バッチ処理は引き続きSSHで行うことをおすすめします。
macOSのFinderで「移動」から「サーバへ接続」を選び、引き渡し資料に対応するサーバーアドレスを入力して、承認済みのユーザー名と認証情報でセッションに入ります。
vnc://<node-address>
Finderの「サーバへ接続」を使用し、出所不明のショートカットに認証情報を保存しないでください。
ユーザー名とノードアドレスを確認してから認証情報を入力します。共同作業でも、同じ長期ログイン情報を共有しないでください。
ネットワークが不安定な場合は、まず解像度または色品質を下げます。高解像度のデスクトップは転送量と入力遅延を増加させます。
秘密鍵、完全なトークン、平文パスワードをコピーしないでください。セッション間で貼り付ける前に、対象ウィンドウと現在のユーザーを確認します。
クライアントを閉じただけではデスクトップからログアウトしたことにならない場合があります。作業後はセッションをロックし、不要になった機密ウィンドウを閉じてください。
WindowsまたはLinuxワークステーションでは、互換性のあるGUI接続ツールを準備する必要があります。クライアントによってショートカット、クリップボード、色、拡大縮小、多画面対応が異なるため、まず機密性のないタスクで検証してください。
対象の接続プロトコル、暗号化転送、カスタム解像度に対応したクライアントを選びます。インストール元はチームの審査を受け、常に最新バージョンを維持してください。
まずDNS、ルーティング、対象ポートを確認してからGUIセッションをテストします。会社のプロキシ、出口ファイアウォール、Wi-Fiの切り替えがセッション切断の原因になる場合があります。
まず単一ディスプレイと中程度の解像度で検証し、その後少しずつ画面サイズを上げます。画面が真っ黒になる、または切れて表示される場合は、低い解像度に戻してセッションを再確立してください。
安定して入力でき、ログを明瞭に読め、よく使うショートカットが正しく割り当てられ、安全にセッションを終了できる場合に限り日常のフローに組み込みます。完全にスクリプト化できるタスクは、SSHまたはCI Runnerを優先してください。
Runnerには専用アカウント、専用作業ディレクトリ、制限付きトークンを使用します。まず最小構成のテストパイプラインを実行し、その後に署名付きビルド、キャッシュ、アーカイブを追加してください。
ソースコード、依存関係キャッシュ、ビルド中間ファイル、最終成果物を分けて、削除ルールの設定とディスク使用量の調査をしやすくします。
トークンには対象リポジトリと必要な操作だけを許可します。個人アクセストークンを使い回したり、トークンをリポジトリやビルド出力に書き込んだりしないでください。
Xcodeのバージョン、プロジェクト種別、モデル、タスク負荷に応じてタグを設定し、互換性のないタスクが誤った環境に割り当てられないようにします。
まず依存関係の確認とユニットテストを実行し、その後にアーカイブします。失敗時は必要なログだけを残し、ユーザーディレクトリ全体を無条件にアップロードしないでください。
成果物が対象ストレージに保存されたことを確認したら、一時認証情報、一時キーチェーン、期限切れキャッシュ、不要になったビルドディレクトリを削除します。
set -euo pipefail
WORK_DIR="$HOME/ci-work/project"
RESULT_DIR="$HOME/ci-results"
mkdir -p "$WORK_DIR" "$RESULT_DIR"
cd "$WORK_DIR"
git fetch --prune
git checkout "$CI_COMMIT_REF"
xcodebuild \
-scheme "$CI_SCHEME" \
-destination "generic/platform=iOS" \
test
xcodebuild \
-scheme "$CI_SCHEME" \
-archivePath "$RESULT_DIR/App.xcarchive" \
archive
find "$WORK_DIR" -name "*.tmp" -delete
権限には担当者、用途、有効期限を設定します。長期間放置された共有アカウント、リポジトリトークン、一時ファイルは、固定ビルド環境の監査可能性を徐々に損ないます。
各メンテナーが専用の鍵を使用します。メンバーがプロジェクトを離れたら、他のメンバーのアクセスに影響を与えずに該当する公開鍵を削除します。
共有環境が必要な場合も、個人ログインと自動化アカウントを分けてください。Runnerに管理者の日常用アカウントを使わせないでください。
リポジトリトークン、Runner登録トークン、一時アクセス認証情報のローテーションを記録し、無効なトークンは速やかに削除します。
ビルドタスクには必要なリポジトリとブランチの権限だけを付与します。成果物のアップロードとソースコードの読み取りには別の認証情報を使用できます。
デスクトップを離れる前にセッションをロックし、機密情報を含むウィンドウを閉じ、不要になったクリップボードの内容を消去します。
タスク終了後に一時秘密鍵、ワンタイムトークン、一時キーチェーン、不要になった認証ファイルを削除します。
パスワード、アドレス、クライアントを勘で次々に変えないでください。まずエラーの種類、発生時刻、ローカルネットワーク、ノード、入口を記録し、該当する確認を行います。
| 症状 | まず確認する項目 | 実行できる対処 | サポート依頼に添付する情報 |
|---|---|---|---|
| 接続がタイムアウトする | ノードアドレス、ローカルネットワーク、出口ルール、対象ポート | 信頼できるネットワークに切り替える。ポートの疎通をテストする。古いアドレスを使っていないか確認する | 発生時刻、ノード、クライアントのネットワーク種別、機密情報を除去した調査結果 |
| 認証に失敗する | ユーザー名、鍵のパス、ファイル権限、認証情報が更新済みか | 詳細なSSHログで使用された鍵を特定する。登録済み公開鍵を確認する | エラー行、ユーザー名、鍵のフィンガープリント。秘密鍵や完全なパスワードは含めない |
| ホストフィンガープリントが変わった | ノードアドレスの変更、インスタンスの再作成、ローカル別名の変更がないか | 接続を停止する。コンソールでフィンガープリントを再確認する。確認後に記録を更新する | ノード、旧フィンガープリント、新フィンガープリント、初回検出時刻 |
| GUIセッションが黒い画面になる | セッションがロックされていないか、表示解像度、クライアントの互換性 | 解像度を下げる。セッションを再確立する。SSHでシステム状態を確認する | クライアントのOS、クライアントのバージョン、表示設定、機密情報を除去したスクリーンショット |
| 解像度がおかしい | クライアントの拡大率、多画面モード、ウィンドウサイズ | 単一ディスプレイと中程度の解像度に戻し、設定を一つずつ復元する | 希望する解像度、実際の解像度、拡大率、クライアント種別 |
| セッションが頻繁に切断される | Wi-Fiの切り替え、プロキシ、アイドルポリシー、回線の揺らぎ | 安定したネットワークを使う。SSHにキープアライブを設定する。長時間タスクを永続セッションで実行する | 切断頻度、継続時間、ネットワークの変化、関連ログの抜粋 |
nc -vz <node-address> 22
route -n get <node-address>
ssh -vvv zonemini-build 2>&1 | tee ssh-debug.log
注文番号、ZoneMini M4 Core / ZoneMini M4 Plus / ZoneMini M4 Proのいずれか、ノード、発生時刻、接続方法、再現手順、期待する結果、機密情報を除去したログを提供してください。証明書の秘密鍵、リポジトリトークン、完全なパスワードはアップロードしないでください。
用途、同時実行タスク数、必要メモリ、対象ノード、レンタル期間を準備します。既存の注文はコンソールで接続情報を確認し、設定についてはまずヘルプセンターを確認してください。