2026 クラウド Mac:SSH Keepalive と Broken Pipe のトラブルシュート(クライアント・サーバ・ネットワークタイマー)
Apple Silicon の Mac mini をクラウドで借りてリモートビルドを回す開発者は、コーヒーブレイクや長いコンパイル、不安定なホテル Wi-Fi のあとで client_loop: send disconnect: Broken pipe をよく見ます。解決の本丸は「帯域を増やす」ことではなく、OpenSSH の両端で keepalive を揃え、NAT のアイドルタイマー(家庭用ルータでは 300〜900 秒 付近が多い)を意識し、多重化のメリットと障害時の影響半径を切り分けることです。本稿ではクライアント/サーバのタイマー対応表、運用に貼れる 8 手順のランブック、tmux と素の SSH の比較、症状から層を推定する表、FAQ、そして MacLogin の香港・日本・韓国・シンガポール・米国リージョンに関する注意をまとめます。
チーム全体のログイン混乱は チーム向けログイン障害の切り分け と併せて読み、資格情報は SSH 鍵ローテーションと 2FA で固めてください。ジャンプホスト経由なら バスションと直接 SSH のタイミング設計も重ねがけします。接続全般は ヘルプ、プランと拠点は 料金ページ を参照してください。
クラウド Mac でアイドル SSH 切断を見る人
シェルを開いたまま別タスクに移る iOS エンジニア、ログを流し読みするデータサイエンティスト、log stream を追う運用者は、いずれも「無言の TCP 切断」に遭遇します。企業 VPN とカフェの NAT は変換テーブルを積極的に再利用するため常習犯です。MacLogin の東京やシンガポールのベアメタルが TCP タイマーを短くするわけではなく、インターネット経路とノート PC の Wi-Fi 省電力が同じくらい効きます。
- 長時間コンパイル+静かな SSH: キー入力がなければ keepalive が飛ばない限りアプリ層のトラフィックは増えません。
- サスペンドしたノート: OS のスリープが Wi-Fi を先に切り、SSH は正常に終了する前に切断されます。
- 二重 NAT+VPN: ステートフル機器が二段重なるとアイドル前提の不一致が積み上がります。
初動で押さえるチェック(番号付き)
- 切断直前にノートを閉じていないか確認する。
- 同じホストへ有線 LAN で再現するか試す。
- VPN のフルトンネルで SSH が迂回されていないか見る。
クライアント対サーバ keepalive 対応表(OpenSSH)
ノート側を自分で直せる かつ クラウド Mac の sshd_config をプラットフォームチームに依頼できるときに使う表です。
| 項目 | 置き場所 | 初期値の目安 | 防げること |
|---|---|---|---|
ServerAliveInterval |
クライアント ~/.ssh/config |
30〜60 秒 | サーバ方向 uplink の NAT アイドル追い出し |
ServerAliveCountMax |
クライアント設定 | 3〜5 | 短いパケット損失バーストでの早すぎる切断 |
ClientAliveInterval |
サーバ sshd_config |
60〜120 秒 | 共有ホスト上の PTY の取り残しセッション |
ClientAliveCountMax |
サーバ sshd_config |
3 | クライアントクラッシュ後のゾンビシェル |
ClientAlive* はフェアユースにも効きます。コンソール引き継ぎロースター のルールとセットで「長時間セッションの所有者」を文書化してください。
設定レビュー用の短い順序立て
- 社内標準の秒数を Wiki に 1 行で書く。
- 新入社員用の
ssh_config.d断片を配布する。
2026 向け SSH 安定化 8 手順ランブック
- RTT ベースライン: オフィス VPN から MacLogin 宛の中央値 RTT を記録し、営業時間帯に p95 が 40 ms を超えるかフラグする。
- クライアント断片:
Host maclogin-*にServerAliveInterval 45とTCPKeepAlive yesを入れる(ポリシーで禁止されていなければ)。 - サーバ確認: クラウド Mac で
sshd -Tの実効値が文書化した標準と一致するか見る。 - MUX 判断:
ControlMaster autoは復旧手順を理解してから。詰まったらssh -O exitを runbook に書く。 - 長ジョブ: 無人が 25 分 を超えそうなら
tmuxまたはscreenで包む。 - VPN スプリット: SSH 出口が不要なのに混雑したコンセントレータへ強制されていないか確認する。
- ログ: パイロット週に
/var/log/system.logの sshd 切断理由を採取する。 - 「さよなら」文書: スリープと SSH の期待値を請負者向けに 1 ボックスで公開する。
多重化のトレードオフ:tmux、screen、SSH ControlMaster
tmux はクライアントが切れてもサーバ上のシェルは生き続けるため、Broken pipe は「手元のクライアント問題」に留まり作業は失われにくいです。ControlMaster は TCP 握手を減らしますがリスクが一点集中し、共有ホストでマスターソケットが固まった四半期には三人が同時にデプロイ窓を失い、運用が rm ~/.ssh/controlmasters/* で復旧した、という話も珍しくありません。チームごとに主戦略を一つ決め、Wiki に固定しましょう。
- 対話作業は tmux をデフォルトにするかどうかを合意する。
- CI 用ホストでは MUX を禁止するか別ポリシーにする。
VNC と SSH を混在させると、デスクトップは生きているように見えてジャンプホストへの SSH トンネルだけがホテル NAT に落ちている、という誤診が起きます。サポートには「画面フリーズ」と「転送死」を切り分けさせ、シェル内の echo $SSH_CONNECTION が期待と一致するか確認させてください。
定量的な習慣として、毎月 5 分のドリルで各エンジニアが MacLogin 向け Host ブロックに keepalive の数値が実際に入っているか(「あとで直す」コメントだけではないか)を確認します。IT 系のデータベースに記録しているチームは、インシデント橋渡しでの平均復旧が 12 分 未満に収まりやすい、という現場報告もあります。
- 監査で
~/.ssh/configの該当 Host をスクリーンショット提出してもらう。 - 逸脱があれば翌営業日までにパッチを当てる。
症状 → 想定レイヤ → まず試す修正
| 症状 | 想定レイヤ | 最初の手 |
|---|---|---|
| アイドル約 5〜15 分で切断 | NAT/FW のアイドル | ServerAliveInterval を 30〜45 秒 に下げる |
| 認証直後に即リセット | ホスト鍵、ACL、レート制限 | フィンガープリント照合;ヘルプ を参照 |
| VPN 時だけ落ちる | 企業ミドルボックスの MTU/MSS | mtr と並列 scp 本数の削減 |
| セッション中にランダムフリーズ後 pipe | ノート Wi-Fi 省電力 | 長時間 SSH 中は積極的な Wi-Fi スリープを切る |
エスカレ前に揃える情報(順序付き)
- 切断時刻(タイムゾーン明示)。
ssh -vvv末尾 40 行。- 有線・VPN オフで再現するか。
Broken pipe FAQ(2026)
「MacLogin が不安定」というチケットを切る前に、上記 3 点を添付してください。根本原因がスリーピングノートであるのに東京のベアメタルを疑う往復を防げます。
- TCPKeepAlive だけで足りる? NAT 越しでは粗く、SSH アプリ層 keepalive の方が効きやすいです。
- 積極 keepalive は CPU を食う? M4 級ホストでは誤差;人間の再接続コストの方が大きいです。
- リージョンは関係ある? あります。APAC に人がいるなら香港や東京で RTT を削り、料金 でノード配置を選んでください。
請負者も正社員と同じ設定にすべきか、という問いには「はい」です。チェックイン済みの ssh_config.d 断片を配れば、ベンダー退去後にデフォルトへ戻って夜間だけ落ちる、といった事故を減らせます。
SSH 重視ワークフローで Mac mini M4 が効く理由
Apple Silicon Mac mini M4 は複数の ssh セッションと git 操作を並列にさばき、CPU 曲線が読みやすいため、一時的な Wi-Fi 瞬断後のクライアント再試行にも強く振る舞います。統合メモリにより sshd とビルドデーモンが共存しても応答が崩れにくく、監視用に tmux ペインを積んでも余裕が出ます。
MacLogin は香港・日本・韓国・シンガポール・米国でこれらのノードを提供しています。レイテンシ SLO を地理にマッピングし、GUI 承認が必要なら VNC ガイド とセットで運用し、keepalive 調整は単発チケットではなくフリート設定として扱ってください。