2026SFTPCI同時接続

2026 リモート Mac SFTP をチームと CI で共有:同時セッション、並列 Job、keepalive の意思決定表

複数パイプラインが同一のリモート Mac SFTP 入口を共有すると、認証エラーではなく接続リセット、セッション枯渇、マトリックス Job による SSH チャネル飽和が典型障害になります。本稿では直列・限定並列・キュー投入・アカウント分割の四モデルを比較し、MaxSessionsMaxStartupsClientAliveServerAlive の基線を示します。ステージングとシンボリックリンクによる原子リリースSFTP と rsync の比較Mac クライアントと CI 連携とあわせて設計してください。

リモート MacSFTPGitHub Actionskeepalive
複数チームがリモート Mac へ SFTP と CI でアップロードするイメージ

三つの痛み:接続できることとスケールできることは別です

痛み1:マトリックス Job が増えると謎の切断。各ジョブが独自の SFTP/rsync over SSH を開き、MaxSessionsMaxStartups が厳しいと後続が拒否されたり転送途中で broken pipe になります。無線 LAN の不安定さと誤認されがちです。

痛み2:対話的 SFTP と自動化が同じ予算を奪う。大容量ドラッグ&ドロップとパイプラインの増分同期は同一 SSH サブシステム上で競合しますが、多くのチームは接続数と帯域を一枚の表で管理していません。

痛み3:中間装置がアイドル TCP を切断。企業出口やキャリア NAT は数分単位で無通信セッションを掃除します。ディスク停滞でアプリが「まだ生きている」ように見えても経路は既に落ちていることがあり、keepalive とチャンク検証がないとリリース枠の中で再送コストだけが膨らみます。

設定より先に転送アーキテクチャを選ぶ

直列は最小チーム向け。限定並列はアクティブ SSH を全体で 2〜4 に抑えつつキューで吸収する一般的な既定値です。キュー投入は複数リポジトリが一つの Mac を共有するときに有効です。アカウント分割は委託先や事業部単位の分離に効き、権限と監査の最小権限とも整合します。

ステージング+symlink 切替を既に採用している場合は、短いカットオーバー窓と長時間の同期窓で接続予算を分けてください。読み取り一貫性(原子リリース)と接続安定性は別ノブです。

意思決定表

レビュー会で合意形成に使い、RTT・ディスク・CPU で再測定してください。

モデル向いている場合主なリスク最小の制御面
直列極小チーム、低頻度リリース待ち時間手順書と任意ロック
限定並列少数パイプラインsshd と CI の両方の上限調整sshd 上限、max-parallel、バックオフ
キュー多リポジトリ単一入口スケジューラ SPOFキュー UI とリプレイ
分割アカウント外部パートナー併用鍵運用chroot、監査ログ、ローテーション

五ステップ:sshd から CI 並列度へ

運用順序(下のスニペットと対応)。OpenSSH 想定で、sshd 再読み込み前後の sshd -T 出力を必ず保管します。

  1. sshd -T で maxsessions・maxstartups・clientalive 系を記録しアーカイブする。
  2. sshd_config を更新し sshd を再読み込み後、同コマンドで差分を確認する。
  3. CI ランナーと運用端末の ssh 設定に ServerAliveInterval/CountMax を書く。
  4. GitHub Actions の max-parallel を下げるか、アップロード専用キューを置く。
  5. アクティブ SSH 数・切断 errno・スループットを日次でログし、FW アイドル時間と照合する。
sshd -T | egrep 'maxsessions|maxstartups|clientalive'
# MaxSessions 10
# MaxStartups 10:30:100
# ClientAliveInterval 60
Host your-remote-mac
  ServerAliveInterval 30
  ServerAliveCountMax 6

GUI クライアントでも同等の keepalive を有効化してください。項目名は ツール選定ガイド を参照します。

数値基準

WAN 最適化がない場合、クライアント ServerAliveInterval 約30秒、サーバ ClientAliveInterval 約60秒 が多くの企業アイドルタイマーを越えやすいです。MaxSessions は 10 前後が一般的ですが、対話セッションやエージェント用に余白を残してください。CI 再試行は指数バックオフ(例:15〜30秒、その後60秒)を推奨し、切断がハンドシェイク失敗かパス誤りかをログに残します。単一オブジェクトが約 5GiB を超える場合は分割転送と検証を検討し、一貫性はステージング+symlink に寄せます。

補足指標として、ピーク時の平均同時 SFTP セッション数と時間あたりの再試行回数をダッシュボードに載せると、「サーバ不良」か「上限・ネットワーク」かを早く切り分けられます。

FAQ とマネージド リモート Mac

  • 並列で切れる=サーバ故障? まず上限・NAT・keepalive を疑ってください。
  • SFTP と rsync は競合? はい。SSH セッションと帯域をまとめて予算化します。
  • 原子リリースとの関係? 原子リリースは読み手の一貫性、本稿は転送経路の安定性です。

まとめ:限定並列と keepalive で多くの謎切断を抑止できます。限界:私物ノートをビルド機にするとスリープや手動設定変更が蓄積します。SFTPMAC の価値:マネージド リモート Mac とディレクトリ隔離でポリシーと到達性を固定し、チームはパイプラインとゲートに集中できます。

セッション争奪を減らし、隔離されたリモート Mac で SFTP と CI を載せたい場合は SFTPMAC のプランをご確認ください。