2026遠端 MacSFTPMaxAuthTriesLoginGraceTimeCI

2026 年遠端 Mac SFTP 公網入口:抗掃描與 MaxAuthTries/LoginGraceTime 又不誤傷 CI Runner 的決策矩陣

sshd 同時服務真人與自動化,外層封鎖常誤傷 GitHub Actions 的共享出口;過緊的 MaxAuthTries 則會把矩陣重試變成「全站登入失敗」。本篇把掃描雜訊與 CI 抖動分開敘事,並把參數與 主機金鑰驗證併發工作階段ProxyJump 跳板放在同一變更單;需要把營運成本外包時可評估 SFTPMAC 託管遠端 Mac。

暴力猜解RunnersshdSFTPGitHub Actions遠端 Mac
2026 遠端 Mac SFTP sshd MaxAuthTries LoginGraceTime CI Runner 資安示意

痛點拆解:安全與交付節奏的雙頭馬車

把遠端 Mac 暴露在公網做 SFTP,本質是平台維運題:資安希望失敗越快越好並封鎖來源;交付需要 CI 短時間平行上傳且會重試。若沒有共用語言,現場常誤判成網路問題,實際卻是 MaxAuthTries 與外層閾值打架。

「只允許公鑰」仍擋不住掃描握手成本;若 CI 端 known_hosts 與主機不一致,重試帳面像攻擊。LoginGraceTime 過短也會讓跨區工程師首次對指紋時被踢線。

矩陣 Job 會放大預算:多 Job×重試若未用 Match User 分段,整機驗證預算易被單一管線綁架。另若無視 MaxSessions 與 keepalive,會出現「參數很嚴、連線仍塞滿」的假象。

威脅模型:掃描噪音與 CI 抖動如何分流

暴力猜解常見分散帳號與機械節奏;CI 抖動多綁定固定服務帳號並與 DNS/跳板變更相關。混在同一計數器會讓政策搖擺。建議分層:可達性、主機身分、驗證與工作階段;主機身分正確後,再以 MaxAuthTriesLoginGraceTime 給自動化可理解的失敗預算。有跳板時,對外層先聚合節流,內層略寬,避免矩陣一次鎖死全鏈路。

可量化基線:用比率而不是用感覺

先算每來源每小時失敗與成功工作階段比;帳號分散偏掃描,單一指紋集中偏金鑰/主機金鑰事件。用「每 Job 重試×矩陣寬÷秒數」估尖峰,對照 macOS OpenSSH 語意。LoginGraceTime 以 RTT P95 為準;發佈窗暴量多為憑證漂移。工件 SHA256 失敗應與 SSH 驗證分桶,避免誤白名單。

雲端安全群組擋得了洪水但不懂驗證語意,需周邊限速加 sshd 參數並標明負責團隊。macOS 上 Fail2ban 非首選整合路徑;務實作法是先關密碼、ed25519、Match User 分段,必要時改 私網 mesh 收斂入口。

決策矩陣:限次、寬限、外層封鎖與 CI 白名單

控制手段最適場景效益主要風險
僅提高 MaxAuthTries金鑰事件應急快速止血若仍殘留密碼路徑會放大窗口
緊縮 MaxAuthTries 且僅金鑰公網入口降低密碼猜解面錯金鑰更快失敗;流程需退避
縮短 LoginGraceTime半開連線濫用省 CPU高 RTT 使用者可能被斷線
雲端防火牆限速掃描風暴在碰 sshd 前吸收門檻過低仍可能打到 CI burst
Fail2ban 類自動封鎖Linux 且日誌穩定自動響應共享 NAT 誤判
Mesh 或私網入口架構可改縮小暴露面路由與 ACL 成本

下決策前先問三件事:是否仍有任何密碼或鍵盤互動路徑?CI 是否走共享 NAT?跳板是否單點?任一為真,就應組合多個控制項,而不是賭單一參數。

sshd 設定片段與流程退避(示意)

# sshd_config 片段(請依實際 OS 與發行版調整)
# PasswordAuthentication no
# KbdInteractiveAuthentication no
# MaxAuthTries 4
# LoginGraceTime 45
# ClientAliveInterval 30
# ClientAliveCountMax 4
# Match User ci-upload
#   MaxAuthTries 6
#   ForceCommand internal-sftp -d /Volumes/artifacts
# GitHub Actions:驗證失敗後在 workflow 使用指數退避 sleep

落地步驟:從帳號分段到演練

一、Match 分真人與 CI 上傳帳號。二、internal-sftpForceCommand 時先查 chroot 權限,避免誤判驗證。三、MaxSessions 對齊併發並銜接 OIDC/部署金鑰。四、StrictHostKeyChecking=yesUserKnownHostsFile 納秘密管理。五、大輪替期暫緩過激封鎖並雙人覆核防火牆。六、測試機演練錯金鑰復原,禁止壓力下關閉主機檢查。

稽核可把連線計數與產物校驗綁票;SIEM 不落私鑰。主機金鑰輪替應有雙金鑰窗口,避免團隊為救 CI 永久放寬檢查。負向測試慢握手與大檔上傳;校驗 keepalive。多區重試加抖動;自架與託管 Runner 出口分開記帳;環境分帳號。參數數字要寫明理由,避免從無關伺服器抄更嚴值。

若自建在補丁、日誌與演練上負担過重,可把同一模型交給 SFTPMAC 託管遠端 Mac,把「擋掃描/不擋 CI」收斂成可營運預設。

建議閱讀順序(全為站內連結)

建議依序閱讀:Actions 主機金鑰OIDC 與部署金鑰併發 SFTPProxyJump 跳板 → 可選 Tailscale/Headscale mesh首頁了解託管容量。

FAQ、檢查清單與為何看向託管

總結:公網 SFTP 應把 MaxAuthTriesLoginGraceTime、僅金鑰、主機檢查與工作階段預算寫在同一 runbook,並用外層限速與拓樸吸收掃描。自建成本含 macOS 升級後 OpenSSH 行為差異與日誌整合;若要把細節變成可重複能力,SFTPMAC 託管遠端 Mac 能把張力變成預設營運值。

on-call 一頁清單:密碼關閉、Match User、每角色 MaxAuthTriesLoginGraceTime 附 RTT、MaxSessions 對齊 CI、known_hosts 釘選、外層封鎖有負責人、回滾不需關主機檢查。