1人1つの鍵
複数人で同じ秘密鍵を共有しないでください。個別の鍵ならアクセスしたユーザーを特定しやすく、権限を個別に取り消せるため、1つの漏えいがチーム全体に及ぶリスクを抑えられます。
REMOTE ACCESS / 接続ガイド
Xcode、システム設定、グラフィカルツールを使う場合は、コンソールからブラウザリモートデスクトップを開きます。ビルド、ファイル同期、自動化タスクにはSSHを使用します。どちらも同じ専用物理マシンに接続するため、ファイル、依存関係、実行環境はそのノードに保持されます。
01 / 接続方法を選ぶ
ブラウザリモートデスクトップとSSHは互いに代替するものではありません。前者は完全なmacOSグラフィカル環境を提供し、後者はスクリプト化しやすく、低帯域幅や長時間実行するタスクに適しています。
| 比較項目 | ブラウザリモートデスクトップ | SSH |
|---|---|---|
| 適したタスク | XcodeのGUI操作、システム設定、アプリ画面の確認、キーボードとディスプレイの設定 | ビルドスクリプト、Git操作、依存関係のインストール、ログ確認、自動化、大量ファイル処理 |
| 操作方法 | ブラウザ内にリモートデスクトップを表示し、ローカルのキーボードとポインターで操作 | ターミナルのコマンドライン。鍵認証、ターミナルマルチプレクサー、スクリプトと併用可能 |
| 開始前の準備 | ノードがオンラインで、ブラウザが必要なセッション接続を許可し、ノードのログイン情報を取得済みであること | ノードアドレス、ユーザー名、秘密鍵ファイル、初回ホストフィンガープリントの確認 |
| ネットワークの推奨事項 | 安定した接続を優先。高遅延時は解像度と色品質を下げる | 必要帯域幅が小さい。長時間のタスクにはターミナルマルチプレクサーを使い、ログをファイルに保存する |
| 終了方法 | 作業を保存してからデスクトップセッションを終了するか、リモートビューを閉じる | 使用する exit セッションを正常に終了し、書き込み中のタスクを直接中断しない |
02 / グラフィカルインターフェース
通常の手順には、ノード状態の確認、認証情報の照合、セッション確立、ローカル入力の適応が含まれます。デスクトップが表示されない場合は、ログイン要求を連続して再送信しないでください。
コンソールにログインし、インスタンス一覧から対象ノードを見つけます。ノード識別子、リージョン、ステータスが注文内容と一致することを確認し、オンラインになってから接続入口を開きます。複数のクラウドMacをチームで管理している場合は、誤った環境に入らないよう、先にノード識別子を確認してください。
そのノードについてコンソールに表示されたログイン情報を使用し、他のノードの認証情報を使い回さないでください。貼り付け時は前後に空白が入っていないか確認します。チーム内でアクセス権を引き継ぐ場合は、グループチャットやビルドログではなく、管理された認証情報の手順を利用してください。
デスクトップの読み込み後、まず機密情報を含まないテキスト欄を開き、英字、数字、記号、Command、Option、日本語と英語の切り替えをテストします。キー入力がローカルキーボードと一致しない場合は、ローカルとリモートのシステムレイアウトを統一してから、証明書やコマンドを入力してください。
テキスト編集やXcodeの操作は、 1920 × 1080 から始められます。画面の遅延が目立つ場合は、まず解像度を下げ、次に色品質を下げます。ネットワークが安定したら一項目ずつ上げ、どの設定が遅延の原因か判断しやすくします。
現在の接続が完了するまで待ってから、ノード詳細を一度だけ更新します。ブラウザがセッションに必要な機能をブロックしていないことを確認し、拡張機能なしの独立ウィンドウで再テストしてください。
押したキー、期待される文字、実際に入力された文字を記録します。まずローカルとリモートのレイアウトを一致させ、次にブラウザがショートカットキーを横取りしていないか確認します。
ブラウザのズームを標準倍率に戻してから、リモート解像度を合わせます。ブラウザのズーム、システムの拡大率、リモート画質を同時に変更しないでください。
03 / コマンドライン
SSH接続の前に、アドレス、ユーザー名、秘密鍵の入手元を明確にします。初回に表示されるホストフィンガープリントは、コンソールの記録と照合してください。確認を無条件にスキップしないでください。
ssh-keygen -t ed25519 -f ~/.ssh/mw_node
MacWorkerノード専用の鍵を作成し、ローカル鍵のパスフレーズを設定します。チームで使用中のデフォルト鍵を上書きしないでください。
export NODE_HOST="コンソールに表示されたノードアドレス"
export NODE_USER="コンソールに表示されたユーザー名"
アドレスとユーザー名は、現在コンソールに表示されている内容を使用します。環境変数は現在のターミナルセッションだけで有効なため、コマンド履歴に接続パラメータが繰り返し残るのを防げます。
ssh -i ~/.ssh/mw_node "$NODE_USER@$NODE_HOST"
ターミナルにフィンガープリントが表示されたら操作を停止し、アルゴリズムの種類と完全なフィンガープリントをコンソールの記録と1文字ずつ照合します。完全に一致した場合のみ接続を確認してください。
exit
終了前に、ファイル書き込み、依存関係のインストール、ビルドタスクが完了していることを確認します。長時間のタスクは再開可能なセッションに入れ、単一のターミナルウィンドウの接続維持に依存しないでください。
04 / セキュリティの基本方針
専用物理ノードは他のテナントと計算リソースを共有しません。ただしチームでは、鍵、認証情報、メンバー変更、ログイン記録を引き続き管理する必要があります。
複数人で同じ秘密鍵を共有しないでください。個別の鍵ならアクセスしたユーザーを特定しやすく、権限を個別に取り消せるため、1つの漏えいがチーム全体に及ぶリスクを抑えられます。
認証情報をコードリポジトリ、ビルドログ、プロジェクト文書に書き込まないでください。引き継ぎが必要な場合は、チームで承認された管理下の手順を使用し、引き継ぎ後に権限範囲を確認します。
メンバーがプロジェクトを離れた、または担当が変わった場合は、その日のうちに該当する公開鍵とコンソールアクセス権を削除し、接触した可能性のある共有認証情報もローテーションします。
少なくともチームのリリースサイクルごとに、ログイン時刻、接続元、失敗記録を確認します。勤務時間帯や通常の地域と合わない活動を見つけた場合は、まず関連する認証情報を凍結してから調査してください。
05 / ファイル転送
アップロード前に本当に必要なファイルを確認し、ダウンロード時は対象成果物だけを取得します。依存関係キャッシュ、一時ディレクトリ、過去のアーカイブをプロジェクト全体と一緒に転送することを前提にしないでください。
scp -i ~/.ssh/mw_node -r ./BuildInput "$NODE_USER@$NODE_HOST:~/Work/"
明確なディレクトリを一度にアップロードする場合に適しています。転送前にローカルログ、一時成果物、不要な過去ファイルを除外し、保存先に十分なディスク容量があることを確認してください。
scp -i ~/.ssh/mw_node "$NODE_USER@$NODE_HOST:~/Work/output.zip" ./Artifacts/
まずノード上で成果物を整理・検証し、単一のアーカイブファイルとしてダウンロードします。完了後にファイルサイズまたはハッシュを比較し、不完全な成果物が後続処理に入らないようにしてください。
現在のブランチとタスクに必要なリソースだけを同期し、作業ディレクトリ全体をコピーしないでください。
高遅延ネットワークでは分割して転送し、ローカルネットワークが混雑する時間帯を避けます。
元ファイルを残し、サイズとハッシュが一致することを確認してから中間アーカイブを削除します。
06 / セッション最適化
問題がグラフィック転送とコマンド実行のどちらで発生しているかをまず判断します。リモートデスクトップの遅延は、必ずしもノードの計算性能低下を意味しません。SSHの応答が正常なら、先に画面パラメータを調整してください。
まず単一の表示領域と中程度の解像度を維持します。遅延が目立つ場合は一段ずつ下げ、複数のパラメータを同時に変更しないでください。操作が滑らかになってから文字の鮮明さを上げます。
コード作成やシステム設定の調整では、通常、最高の色品質は必要ありません。画質を下げると画面の更新量を減らせます。視覚確認時のみ一時的に戻してください。
ビルド、テスト、依存関係の処理をターミナルマルチプレクサーのセッションで実行し、出力をログファイルにも保存します。再接続後にセッションを復元できるため、最初から実行し直す必要がありません。
tmux new -s build
tmux attach -t build
長い処理を繰り返し可能な手順に分割し、出力を固定ディレクトリに保存して、直近の完了段階を記録します。接続が切れたら、まずプロセスと成果物を確認し、同じタスクをすぐ再起動しないでください。
07 / エラー早見表
調査時はノード識別子、発生時刻、タイムゾーン、接続方法、完全なエラー概要を記録します。一度に変更する変数は1つだけにし、どの手順が実際に効果を発揮したか分からなくならないようにしてください。
まずユーザー名と秘密鍵のパスを確認し、次に秘密鍵ファイルの権限と公開鍵が対象ノードに設定されているかを確認します。詳細モードで、クライアントが実際にどの鍵を試したかを確認してください:
ssh -v -i ~/.ssh/mw_node "$NODE_USER@$NODE_HOST"
完全な秘密鍵や機密フィールドを含む詳細ログを他人に送らないでください。サポートチケットには、エラーの段階、アルゴリズム情報、加工済みの概要だけを提供してください。
ノードがオンラインであることを確認し、現在のセッションの確立を待ちます。その後、拡張機能なしの独立したブラウザウィンドウで再試行し、ブラウザが必要な機能をブロックしていないか確認します。SSHで接続できてもデスクトップが空白のままなら、ブラウザのバージョン、発生時刻、ノード識別子を記録してサポートチケットを送信してください。
機密情報を含まないテキスト欄に、期待される文字と実際の文字を記録し、ローカルとリモートのシステムキーボードレイアウトを確認します。次にCommand、Option、Controlがローカルシステムまたはブラウザのショートカットに横取りされていないか確認します。調整後はキーごとに再テストし、認証情報の入力欄で試行しないでください。
ローカルネットワーク、対象アドレス、ノード状態、クライアント設定の順に確認します。まず既知の安定したローカルネットワークに切り替えて再テストし、その後アドレスが期限切れまたは誤ってコピーされていないか確認します。同じノードへの2つの接続方法がいずれもタイムアウトする場合は、現地時刻、利用ネットワーク、エラーの継続時間を記録してください。
直ちに接続を停止し、検証を無効にしたり既知のホスト記録を直接削除したりして警告を回避しないでください。まずノードアドレスが変わっていないか確認し、コンソールで新しいフィンガープリントと変更理由を照合します。検証が完了してから、そのアドレスに対応する古い記録を削除して新しい接続を確立してください。
READY TO CONNECT
まずノードがオンラインであることを確認し、タスクに応じてブラウザリモートデスクトップを開くかSSHを設定します。GUI操作とコマンドラインを組み合わせる場合は、2種類のセッションから同じ専用物理Macに接続できます。