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

2026年:TCP keepalive、TCP_USER_TIMEOUT、およびレンタル ProxyMac Mac mini へのアイドル SSH 生存

ProxyMac エンジニアリングチーム 2026年4月23日 約12分で読めます

欧州や米国東海岸からSSHProxyMac Mac mini香港・東京・ソウル・シンガポール・米国)へ伸ばす運用では、入力が続くときは生きているのに、Cursor を7〜25分ほどアイドルにした直後や tail -f の無音区間のあとにセッションだけが消える、という現象が珍しくありません。原因が「Apple Silicon 上の SSH が壊れている」ことはほぼなく、ほとんどの場合は無言のまま切るミドルボックスのタイマーと、生存を証明しないデフォルトソケットの組み合わせです。本稿では二層の心象モデル(OpenSSH の keepalive とカーネル TCP の挙動)、観測症状で引ける意思決定表、数値デフォルト入りのコピペ可能な~/.ssh/config(アプリ層プローブ30秒、連続4回未応答でクライアント切断)、具体カウンタに触れる7段階の証拠収集手順(多くのゲスト Wi‑Fi で120秒前後に見えるキャリアのアイドルタイマーなど)、および関連ガイドへのリンク—autossh・Mosh・keepalive高 RTT クライアント調整MTU ブラックホール—をまとめ、TCP をいじる前に IPQoS が犯人でないことを切り分けられるようにします。

ソケット経路が安定したらヘルプセンターのブートストラップをブックマークし、料金ページでリージョンを比較してください。経路が未検証のままだと、新しいメンバーが毎回同じパケット損失の都市伝説を繰り返します。

長距離経路でアイドル SSH が「静かに死ぬ」とき

症状は大きく三つに分類できます。(A) ターミナルがバナーも Broken pipe も出さず固まり、キーを押すまで何も起きない。(B) 最後のパケットからちょうど120〜900秒後に client_loop: send disconnect: Broken pipe が出る。(C) 対話シェルは残るのに scprsync0%のまま永遠に進まない。A は上流のNAT 束縛が期限切れになったのに RST を返さないパターンが多く、ホテル Wi‑Fiで UDP 音声優先がアイドル TCP を飢えさせる構成で起きやすいです。B はステートフル FWが無音フローの最大継続時間を強制しているケースに対応しがちです。C はPMTUD ブラックホールと重なるので、keepalive の数式を弄る週末を費やす前に MTU の記事で突合してください。

  • SSH トンネル越しの画面共有は、キー入力がなくても動画フレームが止まるためアイドル間隔が長くなります。
  • 踏み台はタイマーを乗算します。各ホップが独自の300秒アイドル方針を持つことがあります。
  • LaunchAgent 駆動の git pullはサーバ側で処理が進んでいても、キャリアから見ると無音に見えがちです。

カーネル TCP keepalive と OpenSSH ServerAliveInterval

カーネルの TCP スタックは macOS では net.inet.tcp.keepidle 系の遅延のあと keepalive セグメントを送れますが、sysctl だけで遠隔ミドルボックスを制御することはできません。一方 OpenSSH の ServerAliveInterval は、OS デフォルトが2時間超になることもある待ち時間を経ずに、SSH プロトコルメッセージを注入して上位層のタイマーをリセットします。両者は補完関係です。SSH keepalive はSSH 接続が生きていることを示し、TCP keepalive はエンドツーエンドで4タプルがまだ尊重されていることを示します。

チケットに書く数字:アプリ層プローブは30秒、連続4回未応答で切断、ミニまでの経路 RTT が平均280ms 未満であることを文書化し、経理が「リージョン選定ミスを隠しているのでは」と疑わないようにする。

失敗クラス別チューニング表

症状シグネチャ第1のつまみ第2のつまみエスカレーション
アイドル > 15分、キー入力で即復帰ServerAliveInterval 30踏み台ホップ数を減らすWi‑Fi の BSSID を取得しゲスト Wi‑Fi ガイドと比較
300秒の倍数で Broken pipeクライアント側 TCPKeepAlive yesControlMaster ガイドに沿いソケット多重化ISP の文書化されたアイドルタイマーを確認
アイドルがなくても SCP が途中で停滞MSS クランプを確認PMTUD テストを実行遅延表に基づきリージョンを変更
夜間ビルドだけ失敗ミニから夜間 curl cronWAN DHCP 更新をログジョブをミニ発の pull に移す

ProxyMac 向けクライアント ~/.ssh/config レシピ

リージョンごとにホストエイリアスを明示命名し、新しいチームメイトが同じ数値を継承できるようにします。下のスタンザは香港向けですが、JP/KR/SG/US のエイリアスへそのまま複製できます。IPQoS は長 RTT ガイドを読んだにだけ調整してください。スループット用と低遅延用クラスを誤って混ぜると、バルク転送中に keepalive パケットが飢えたりします。

Host proxymac-hk-dev HostName your-node.proxymac.com User youruser ServerAliveInterval 30 ServerAliveCountMax 4 TCPKeepAlive yes IPQoS throughput ControlMaster auto ControlPath ~/.ssh/cm-%r@%h:%p ControlPersist 10m

SRE が Confluence に貼れる 7 段階プローブ手順

  1. ping -c 20ベースライン RTTを記録し、中央値とp95を保存する。
  2. 素の SSH を開き12分間アイドルにし、シェルが戻るか記録する。
  3. 捨てセッションで ssh -vvv を有効にし、expecting SSH2_MSG_KEXINIT で止まる箇所を grep する。
  4. 512MBファイルの並列 SCP を行い、90秒後にスループットが崩れるなら MTU を疑い keepalive を疑わない。
  5. 企業 VPN のスプリットトンネルが有効ならVPN 状態をログに残す。多くの製品はミニ宛て TCP とアイドル UDPを別扱いにします。
  6. sshd を管理できるならClientAliveIntervalはクライアント方針に合わせる。サーバが10秒プローブ、クライアントが30秒というズレは無駄な負荷になります。
  7. 最終設定をアーカイブし、OpenClaw ゲートウェイの systemd/launchd メモの隣に置き、自動化と人間が同じ真実を参照する。

autossh・Mosh・高 RTT 調整との併用—二重適用に注意

autossh と Mosh のガイドはプロセス監視と UDP 耐性を扱います。本稿の TCP 視点は、素の OpenSSH over TCPをループに残す必要があるときに追加してください。例:git+ssh リモート、ローカル OpenClaw ゲートウェイへの ssh -L ポートフォワード、Mosh に置き換えられない rsync --partial over SSH。Cipher や圧縮の変更を検討する場合は、keepalive で生存を証明したあとに順序付けしてください。大容量コピー時の AEAD と CPU 負荷の相互作用はIPQoS と暗号の記事にあります。

警告:攻撃的な ServerAliveInterval 5 は一部の DDoS 対策アプライアンスを刺激し、プローブ連打のあと TCP RST を返すことがあります。エンタープライズエッジでは段階的に上げてください。

FAQ

ミニ側の sysctl tcp keepidle を下げるべきか? 顧客管理のラップトップでは通常いいえ。まずクライアントを直します。データセンター隣接のミニが不安定脚を起こすことは稀です。

ControlMaster はアイドルタイマーを悪化させるか? 複数セッションを 1 本の TCP に載せるため、ハンドシェイクコストは下がりますが、その一本が60秒の UDP 飢えた Wi‑Fi タイマーに当たると全セッションが巻き添えになります。経路ごとの多重数を監視してください。

IPv6 のみの uplink は? Happy Eyeballs が IPv4 のブラックホールを隠すことがあります。SSH ターゲットがどちらのアドレスファミリか文書化してから、スタックごとにタイマーを変えてください。

専用 ProxyMac Mac mini なら TCP の衛生状態を測れる理由

Apple Silicon M4 のレンタルミニは、HK / JP / KR / SG / US に固定されたエンドポイントとなり、ピアリングが読みやすい—カフェ NAT を渡り歩く開発用ラップトップとは対照的です。連続的な sysctlnettop のベースライン、CI シークレットを所有する同一ホストへの OpenClaw 自動化、GUI の信頼プロンプトが必要なときの画面共有を同じマシンで回せます。このネットワーク規律をリージョン別の透明な料金と組み合わせると、金曜夜に毎回崩れる単一トンネルに詰め込むよりAPAC 専用タイマー向けの 2 台目のミニの方が合理的だと経理にも説明しやすくなります。

タイマーに合うリージョンを借りる

HK / JP / KR / SG / US · SSH 済み Mac mini