日常の作業端末が Windows(WSL2 含む)や Linux にありながら、シンガポール/日本/韓国/香港/米東/米西の リモート Mac で重いビルドや CI を回す場合、つまずきやすいのは Xcode よりも SSH 経路・鍵・ポートフォワード です。本稿では 直結/踏み台/ゼロトラスト の判断表、コピー可能な ssh config、6 ステップの Runbook、および M4 と課金単位 の組み合わせ指針をまとめます。
リモート Mac をクラウド上のビルドワーカーとして扱い、操作は Windows や Linux に残す構成は 2026 年も一般的です。次の三類型に注意します。
Broken pipe が断続したりします。~/.ssh が二重化したり、IdentitiesOnly なしで多数の秘密鍵を試行してロックされるケースがあります。127.0.0.1 のみで待受するサービスを、ローカル IDE から参照できず調査コストが膨らみます。信頼境界を先に描きます。表は代表的な三方式の比較です。
| 方式 | 前提 | 利点 | 注意点 |
|---|---|---|---|
| 公網 SSH | 安定 DNS と許可された外向き 22/tcp | 経路が短い | スキャン対策と鍵強度が必須 |
| 踏み台+ProxyJump | 全 SSH を監査ホストに集約 | 露出面を縮小 | 一段遅延と SPOF 監視が必要 |
| ゼロトラスト VPN | 公網 22 を閉じる | ホワイトリスト爆発を避けやすい | オーバーレイ自体の運用がクリティカル |
六国と任意の踏み台を Host ブロックに固定します。ServerAliveInterval 30 と ServerAliveCountMax 6 は長時間ビルドで有効です。エージェントは WSL2 と Windows の二重運用を避けます。
クライアント側は原則 127.0.0.1 にバインドし、共有が必要ならファイアウォールで送信元を絞ります。
メモ:常時転送と一時デバッグはセッションを分けると切り分けが容易です。
人間用と CI 用の鍵を分離し、CI には最小権限の鍵だけを載せます。フィンガープリント更新は変更管理に載せ、検証を無効化し続けないことが重要です。
仮想 NIC と NAT の組み合わせでタイムアウトが片側だけ発生することがあります。DNS と MTU を最初に疑い、必要なら 1400 前後へ下げて再試験します。
SSH 中心でシミュレータ並列が軽いなら M4 で十分なことが多く、Git/レジストリ RTT とディスク帯域の方がボトルネックになります。重い行列だけ M4 Pro と短租で上乗せします。
Host maccome-jump HostName jump.example.com User jumpuser IdentityFile ~/.ssh/id_ed25519_jump Host mac-sg mac-jp mac-kr mac-hk mac-use mac-usw User youruser ServerAliveInterval 30 ServerAliveCountMax 6 IdentitiesOnly yes IdentityFile ~/.ssh/id_ed25519_maccome
個人回線や常時逆方向トンネルは睡眠や CGNAT で不安定になります。六地域で再現性を求めるなら、MACCOME の専用物理 Mac と柔軟なレンタル期間がより安定した既定選択になります。
新規 TCP/SSH 握りは RTT を積み上げます。Windows/Linux から六国へ頻繁に接続する場合、ControlMaster auto と適切な ControlPersist でマスター接続を再利用し、ssh/scp/rsync の往復を削減します。ソケットパスはリージョンごとに文書化し、共有踏み台での衝突を避けます。
多重化は踏み台運用の代替ではありません。マスターが無言で死ぬと子セッションが一斉に失敗するため、最終成功ビルド時刻のような軽いヘルス指標を併設してください。
git fetch と対話セッションを同経路に載せるとヘッドオブラインブロッキングが起きやすいです。大規模取得用に別 Host を切り、Runner 用鍵と帯域方針を分離します。
git lfs pull する。known_hosts バンドル更新や UpdateHostKeys を運用化し、検証無効化を常態化しないこと。ローテチケットに旧/新フィンガープリントとロールバック手順を必須化します。
NAT や二重エージェント、自作トンネル調整に四半期で数人日以上を費やすなら、独占のクラウド Mac で変数を削る方が総コストで有利です。
FAQ
WSL2 と Windows ネイティブ、どちらを標準にすべきですか。
チームで一つに決め、~/.ssh とエージェントを揃えます。料金は レンタル料金ページ を参照してください。
ping は通るのに SSH が Connecting のままです。
nc -vz で TCP を確認し、ssh -vvv で KEX と認証を切り分けます。GUI が必要なら SSH と VNC の比較記事 を参照します。
known_hosts が六国で破綻しそうです。
フィンガープリント更新を変更管理に載せ、踏み台で集中検証します。