SSH / VNC ガイド 2026年4月23日

2026 クラウド Mac 同時 SSH と画面共有ロック解除ランブック:PTY 自動化とリモート GUI が衝突するときに MacLogin Apple Silicon を解凍する

MacLogin セキュリティ チーム 2026年4月23日 約 18 分で読了

同じ 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 越しの CIosascriptxcodebuild を走らせ、人間が画面共有で同じデスクトップを見ている。
  • セキュリティ製品 が物理コンソールにしか出ない TCC ダイアログを出し、画面共有側からは見えず 27–40 分ブロックする。
  • 複数の画面共有ビューア5900 転送の上に重なり、CPU が空いていても WindowServer の GPU 時間が 85% を超える。
数値ガードレール:12 時間ローリングで WindowServer CPU が 62% を超え、ユーザー CPU が 15% 未満なら容量購入ではなく同時実行の調査から入る。

フリーズ症状マトリクス(再起動前に列を選ぶ)

観測シグナル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 を重ねると衝突します。

警告:コンソール無しで SSH から WindowServer を kill すると FileVault 有効リースが危険な状態に——まず 9 段階を踏む。

9 ステップ是正ランブック(順序厳守)

  1. 影響範囲をチケットに:リース ID、メトロ(HK/JP/KR/SG/US)、コンソールユーザー名、画面共有クライアント数、対話 SSH 数。
  2. UI テストを走らせる CI を少なくとも 6 分停止し、固まった osascript ヘルパーが抜ける時間を確保。
  3. 画面共有は 1 本に絞り、90 秒待ってから応答を判断。
  4. netstat -an | grep 590 で重複 SSH 転送を除去。
  5. 統制が許せば副ユーザへ切替え、共有ビルド アカウントの方針に沿ってビルドとオペレータを分離。
  6. 次節の述語で統合ログを 300 秒取得し gzip を添付。
  7. pmset displaysleepnow と WoL でディスプレイ睡眠リセットを試し、再起動なしで合成器を解放できる場合がある。
  8. 手順 7 が 2 回連続で失敗したときだけ再起動。JP 金融テナントは取引時間外に。
  9. 事後にどの自動化が画面共有と二度と重ならないかロスターへ記録。

ポートとデーモン衝突マトリクス

TCP ポート典型オーナー衝突の兆候緩和
22OpenSSHMaxStartups でバースト抑制staging の MaxStartups は慎重に、ジャンプホスト推奨
5900画面共有二重の SSH -Lエンジニアごとにローカルポートを分ける
3283ARD エージェント(レガシー)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 自動化と人間の画面共有を積み増さない方が安いです。

ロック連鎖の前に GUI とヘッドレスを分ける

HK・JP・KR・SG・US で画面共有向け mini を足し、CI は SSH のみのホストへ。