SSHコマンドライン
Git操作、依存関係のインストール、スクリプト実行、ログ確認、テストビルド、CIタスクに使用します。まずSSHでノードアドレス、認証情報、ホスト状態を確認してから、他の接続方法を利用します。
- 長時間のビルドや自動化スクリプトに適している
- GUIを切断してもバックグラウンドタスクは影響を受けない
- コマンドのコピー、ログ保存、エラーの再現が容易
このガイドでは、ノードアドレスの確認、ホストフィンガープリントの検証、XcodeのGUI操作、コード転送、ネットワーク調整、安全な切断までを明確な手順に整理しています。コマンドライン作業はSSHを優先し、完全なmacOS GUIが必要な場合のみリモートセッションを確立します。
SSHは通信量が少なく、ビルド、ログ、依存関係、自動化タスクに適しています。GUIリモートアクセスは、Xcodeの操作、シミュレーターの確認、デスクトップでしか行えない設定に使用します。
Git操作、依存関係のインストール、スクリプト実行、ログ確認、テストビルド、CIタスクに使用します。まずSSHでノードアドレス、認証情報、ホスト状態を確認してから、他の接続方法を利用します。
XcodeのGUI操作、プロジェクト設定の確認、シミュレーターの監視、デスクトップアプリの操作に使用します。ネットワークが不安定な場合は、解像度、フレームレート、色品質を先に下げ、セッションを何度も新規作成しないでください。
接続情報は、注文に対応するコンソールのインスタンス詳細から取得してください。チャット履歴、古いスクリーンショット、他人から転送されたテキストを使ってノードアドレスや認証情報を入力しないでください。初回接続時にホストフィンガープリントが表示されたら、まずインスタンス詳細の値と照合し、完全に一致してから承認します。
ノードリージョン、アドレス、SSHポート、ユーザー名、鍵の種類を確認し、すべてが同じ注文・同じ物理ノードの情報であることを確認します。
秘密鍵は現在のローカルユーザーだけが読み取れるようにします。クライアントが権限の広すぎることを警告した場合は、まずファイル権限を調整してから再接続します。
アルゴリズムの種類とフィンガープリント値を1文字ずつ比較します。一致しない場合は接続を停止し、古い記録を削除して警告を回避しないでください。
ログイン後、ホスト名、現在のユーザー、システムバージョン、ディスク空き容量、Xcodeのパスを確認してから依存関係をインストールします。
以下のアドレス、ユーザー名、パス、プロジェクト名は実行できないプレースホルダーです。使用時は必ずコンソールのインスタンス詳細と実際のプロジェクトの値に置き換えてください。
$ ssh -i /path/to/private_key -p <端口> <用户名>@<节点地址>
The authenticity of host cannot be established.
ED25519 key fingerprint is <待与控制台核对的指纹>.
Continue connecting only after verification: yes
<用户名>@<主机名> % hostname
<实例详情中的主机名>
<用户名>@<主机名> % xcodebuild test \
-workspace <项目工作区> \
-scheme <测试方案> \
-destination 'platform=macOS'
Test Suite '<测试套件>' passed
Executed <测试数量> tests, with 0 failures
<用户名>@<主机名> % bundle exec fastlane <流程名称>
[fastlane] Checking project configuration
[fastlane] Running tests
[fastlane] Exporting artifact
[fastlane] Finished without reported errors
GUIクライアントによって項目名は異なりますが、接続の考え方は同じです。アドレスとポートはインスタンス詳細から取得し、解像度と画質はローカルネットワークに応じて設定します。クリップボードとファイル共有は作業に必要な最小限だけ有効にしてください。
コンソールで対象インスタンスが正常に稼働しているか確認し、残っているGUIセッションがリソースを占有していないか確認します。複数人で同じワークフローを使用する場合は、互いに切断しないよう、セッションの引き継ぎ方法をあらかじめ決めておきます。
インスタンス詳細の接続パラメーターを一つずつコピーします。鍵、パスワード、復旧情報を共有メモ、公開コードリポジトリ、チケットのスクリーンショット、暗号化されていない同期フォルダーに保存しないでください。
初回は単一ディスプレイ、1920×1080以下の解像度、中程度の色品質を使用できます。入力と表示が安定してから段階的に上げ、高解像度・高フレームレート・高色深度を最初から同時に有効にしないでください。
テキストのクリップボードは必要な場合のみ有効にします。ディレクトリのマッピングは専用の交換ディレクトリに限定し、ローカルユーザーディレクトリ、鍵のディレクトリ、署名情報を含むパスを直接共有しないでください。
クライアント切断時に、タスクを保持するのか、デスクトップをロックするのか、セッションを終了するのか確認します。作業後は明示的な終了手順を実行し、クライアントウィンドウを閉じただけでセッションが終了したと判断しないでください。
転送方法を選ぶ際は、追跡可能性、差分更新、ファイル権限、機密情報の露出範囲を同時に考慮します。非公開コードやビルド素材を一時的に移動するために、公開ダウンロードリンクを使わないでください。
リポジトリのコード、依存関係のロックファイル、レビュー可能な設定に適しています。まずリモートURLとブランチを確認してから取得し、非公開の認証情報は管理された方法で設定してリポジトリに書き込まないでください。
リソースファイルの差分アップロード、マスキング済みログのダウンロード、ビルド成果物の転送に適しています。リモートの保存先を制限し、転送後に所有者、権限、サイズ、更新日時を確認します。
一度限りの納品素材、キャッシュ、アーカイブに適しています。送信側でダイジェストを生成し、ノード側で再計算して1文字ずつ比較します。結果が一致した場合のみ展開して後続処理に進みます。
高解像度、高フレームレート、高色品質は同時に通信負荷を高めます。調整時は一度に1つのパラメーターだけを変更し、前後を比較して、本当の原因が複数の変更に隠れないようにします。
| 現象 | 最初の手順 | 次の手順 | 確認方法 |
|---|---|---|---|
| マウス操作の遅延 | 解像度を下げる | フレームレートを下げる | ウィンドウを動かし、入力が同期するか確認 |
| 画面が頻繁に再描画される | 色品質を下げる | 動的デスクトップ効果を無効化 | コードファイルをスクロールし、再描画範囲を確認 |
| セッションが断続的に切断される | 有線または安定したWi-Fiに切り替える | 他の大容量通信タスクを一時停止 | SSHセッションも維持して接続の継続性を確認 |
| 入力は正常だが画面が固まる | 現在の描画が完了するまで待つ | 元のセッションを再接続 | 複数のGUIセッションを並行して作成しない |
有線ネットワークを優先し、Wi-Fiでは信号を安定させ、継続的な大容量通信を避けます。
解像度、フレームレート、色品質の順に調整し、毎回1項目だけ変更して結果を記録します。
ビルド、ログ、ファイル処理はSSHで行い、GUIセッションにはGUIが必須の操作だけを残します。
各手順を終えるたびに再テストし、完全なエラーテキスト、発生日時、ノードリージョン、クライアントバージョンを保存します。「接続できない」だけの報告や、切り取ったスクリーンショット1枚だけを提出しないでください。
まずローカルネットワークが利用可能か確認し、ノードアドレスとポートが現在のインスタンス詳細のものか照合します。次に、ローカルファイアウォール、社内ネットワークポリシー、VPNが接続を遮断していないか確認します。SSHとGUIセッションが同時にタイムアウトする場合は、ネットワーク経路とノード状態を優先して調査し、GUIクライアントを何度も再インストールしないでください。
フィンガープリントの変更は、アドレスの入力ミス、別ノードへの接続、インスタンス情報の変更が原因の可能性があります。接続を停止し、コンソールで現在のアドレスとフィンガープリントを再確認し、注文IDとノードリージョンも確認します。新しいフィンガープリントの出所を確認できた場合のみ、ローカル記録を更新してください。
まずユーザー名の大文字・小文字がインスタンス詳細と一致しているか確認し、次にクライアントが同名の古いファイルではなく対象の鍵を実際に読み込んでいるか確認します。鍵ファイルの権限、形式、パスを確認し、エージェントや鍵管理ツールを使用している場合は、想定した認証情報が置き換えられていないか確認します。出所不明の認証情報を連続して試さないでください。
まずSSH接続を維持し、システムが応答しているか確認します。次に既存のGUIセッションの有無、画面パラメーターが高すぎないか、クライアントが現在の接続モードに対応しているかを確認します。単一ディスプレイと低めの解像度に下げて、元のセッションに再接続します。SSHが正常でも画面を利用できない場合は、クライアントバージョンとセッション時刻を記録してからチケットを提出してください。
チームで現在のセッション担当者と引き継ぎ時刻を明確にします。接続前に既存セッションを確認し、終了時はクライアントの切断またはログアウト操作を使用します。占有を解消するためにセッションを強制的に新規作成しないでください。バックグラウンドビルドを継続する必要がある場合は、GUIウィンドウを開いたままにするのではなく、継続実行可能なコマンドラインフローにタスクを移します。
注文ID、ノードリージョン、問題発生日時、完全な再現手順、マスキング済みログ。GUIセッションに関する問題では、クライアント名、バージョン、解像度、ネットワーク種別も追加します。
作業完了後は、GUIセッションからログアウトし、不要なリスニングを停止し、認証情報の露出状況を確認して、ローカルとノード上の一時交換ファイルを削除します。
認証情報が公開リポジトリ、共有スクリーンショット、公開ダウンロードディレクトリ、管理されていないログに入った場合は、直ちに使用を停止してローテーションを完了します。公開コピーを削除してもローテーションの代わりにはなりません。内容がすでにキャッシュまたは複製されている可能性があるためです。
SSHトンネル、ポート転送、クライアントのバックグラウンドプロセス、ローカルプロキシを確認します。明確な用途が残っている入口だけを保持し、担当者、用途、終了条件を記録します。
システムバージョン、Xcodeのパス、依存関係のロックファイル、ビルドコマンド、エラー概要を保持し、秘密鍵、アカウントパスワード、復旧コード、一時交換パッケージ、マスキングされていないログを削除します。
まず構成とノードを選択してデプロイします。ツールチェーンの準備中であれば、初回デプロイ手順を読み進めるか、ヘルプセンターで具体的な問題を確認できます。