2026 クラウド Mac 同時 SSH と画面共有ロック解除ランブック:PTY 自動化とリモート GUI が衝突するときに MacLogin Apple Silicon を解凍する
同じ macOS ユーザーでヘッドレス ssh とインタラクティブな画面共有を混ぜると、ネットワーク障害でも CPU 飽和でもない「ランダム」なハングが出がちです。 2026 年 4 月時点の実務的結論は コンソール セッション競合——WindowServer、loginwindow、PTY 束縛の自動化が同じ GUI コンテキストを奪い合う——で、見た目は不安定な VNC ですが実際はローカル ロックです。 本稿は凍結症状マトリクス、順序付き 9 ステップ、5 列のポート/デーモン衝突表、チケットに貼れる統合ログ述語、MacLogin の香港・東京・ソウル・シンガポール・米国向け FAQ をまとめます。
併読推奨:共有 SSH セッション統制、VNC クリップボードと画面収録ポリシー、SSH 鍵ローテーションと 2FA。リース返却で終わるなら オフボーディング消去。運用リンク:料金、ヘルプ、VNC。
MacLogin では 1 レースが 1 プロダクト線に紐づくことが多く、東京の市場時間とシンガポールの CI ピークが重なると「人が画面を見ながらスクリプトが Aqua を触る」構成が増えます。最初にコンソール争奪と切り分けると平均復旧時間が短く、単純な帯域不足と誤認しにくくなります。オンコール手順書では 9 ステップの順序を固定し、CI を止めずにプロセスだけ kill する抜け道を塞いでください。ログは WindowServer と screensharingd の 20 分窓を必ず同梱し、監査で GUI 側の責務を説明できるようにします。
圧縮ログはリース ID とリージョン略号をファイル名に含め、35 日保持で JP と US のレビュー人が同じ tarball を参照できるようにすると、後追い調査が楽になります。
同時リモート セッションが止まるとき(層の取り違え)
2026 年 4 月のインシデント橋で多いのは次の 3 パターンです。
- SSH 越しの CI が
osascriptやxcodebuildを走らせ、人間が画面共有で同じデスクトップを見ている。 - セキュリティ製品 が物理コンソールにしか出ない TCC ダイアログを出し、画面共有側からは見えず 27–40 分ブロックする。
- 複数の画面共有ビューア が
5900転送の上に重なり、CPU が空いていても WindowServer の GPU 時間が 85% を超える。
フリーズ症状マトリクス(再起動前に列を選ぶ)
| 観測シグナル | SSH 側仮説 | 画面共有側仮説 | 最初の手 | 収集する証跡 |
|---|---|---|---|---|
| カーソルは動くがクリック無効 | sudo パスワードヘルパー固着 | WindowServer 固着 | CI 停止、2 人目の viewer 切断 | WindowServer を 10 s sample |
| SSH は入力を受けるが GUI 停止 | PTY は健全 | コンソール ユーザーの GUI ロック | 副管理者で検証 | loginwindow ハートビート |
| 両方が約 5 秒で同時停止 | カーネル I/O や APFS スナップショット | 同根 | diskutil apfs listSnapshots | ストレージ圧力 |
| 11 分ごとに切断 | 上流アイドル TCP タイムアウト | ARD キープアライブ不一致 | SSH トンネル keepalive 60 秒 | クライアント側 TCP キャプチャ |
ロック機構:コンソール、ARD エージェント、SSH PTY
多くの macOS 自動化プリミティブはコンソール ユーザー セッションに結びつきます。画面共有はそのセッションをストリーミングし、SSH はヘッドレスのままか、暗黙に GUI を要するツールを呼び出します。同時に負荷がかかると優先度逆転が起き、loginwindow は認証を続けても WindowServer が新フレームを合成できず CGS ロックを握られた状態になります。
MacLogin ホストでは画面共有が通常 5900、オブザーブ専用で 5901–5903。ノート PC のスリープ後に 5900 へ -L を重ねると衝突します。
9 ステップ是正ランブック(順序厳守)
- 影響範囲をチケットに:リース ID、メトロ(HK/JP/KR/SG/US)、コンソールユーザー名、画面共有クライアント数、対話 SSH 数。
- UI テストを走らせる CI を少なくとも 6 分停止し、固まった
osascriptヘルパーが抜ける時間を確保。 - 画面共有は 1 本に絞り、90 秒待ってから応答を判断。
netstat -an | grep 590で重複 SSH 転送を除去。- 統制が許せば副ユーザへ切替え、共有ビルド アカウントの方針に沿ってビルドとオペレータを分離。
- 次節の述語で統合ログを 300 秒取得し gzip を添付。
pmset displaysleepnowと WoL でディスプレイ睡眠リセットを試し、再起動なしで合成器を解放できる場合がある。- 手順 7 が 2 回連続で失敗したときだけ再起動。JP 金融テナントは取引時間外に。
- 事後にどの自動化が画面共有と二度と重ならないかロスターへ記録。
ポートとデーモン衝突マトリクス
| TCP ポート | 典型オーナー | 衝突の兆候 | 緩和 |
|---|---|---|---|
| 22 | OpenSSH | MaxStartups でバースト抑制 | staging の MaxStartups は慎重に、ジャンプホスト推奨 |
| 5900 | 画面共有 | 二重の SSH -L | エンジニアごとにローカルポートを分ける |
| 3283 | ARD エージェント(レガシー) | ARD と画面共有ポリシーの混在 | 未使用 ARD 機能をサーバーポリシーで無効化 |
| 動的 | USB セッション ツール | HID エミュレーション試験 | 専用リースで HID スイートを実行 |
統合ログ述語と証跡パック
- WindowServer:
log show --last 20m --predicate 'process == "WindowServer"' - 画面共有認証:
log show --last 20m --predicate 'process == "screensharingd"' - SSH タプル: 各セッションから
SSH_CONNECTIONをエクスポートして本文に貼る。
圧縮ログは共有バケットに 35 日保管し、規制当局が同じ tarball を再取得せずにレビューできるようにする。
FAQ
SSH から sudo pkill ScreenSharing は安全か? アイドル viewer を切った後だけ。さもないと FileVault 解除途中のエンジニアを孤立させる。
画面共有を全面禁止すべきか? 多くのプロンプトは GUI が必要。禁止よりメンテ枠と CI カレンダーを揃えて予約運用へ。
帯域は絞られるか? メトロ別シェイピングは 料金ページに記載。跨ぎ回線が飽和するとジッターが増える。
同時リモートに Mac mini M4 が向く理由
M4 はフレームバッファ経路が広く、大きな Xcode ログを SSH で tail しながら画面共有を滑らかに保てます。統合メモリは小さな x86 VM のような GPU/CPU メモリ分断を減らします。HK・JP・KR・SG・US のフリート配置により、GUI 重いリースをチーム近くに置き、CI はヘッドレスに分離し、コンソール文脈の取り違えリスクを下げられます。
本ランブック後も月 3 件を超えるなら 料金からリースを分割し、1 台に Aqua 自動化と人間の画面共有を積み増さない方が安いです。