共享机构建机上的典型痛点
构建与交互混用、或多人共同一 HOME 时,HTTPS 与 SSH 身份易串:401/403、半成功克隆、轮换后仍用旧 PAT。根因多在helper 键空间与并发写同一存储未隔离,而非 Git 本身。
传输与存储:SSH 证书、HTTPS helper、钥匙串分区
下表选型排障。
| 维度 | SSH(证书 / 密钥) | HTTPS + PAT + helper | 钥匙串 / 文件后端(macOS) |
|---|---|---|---|
| 身份绑定 | IdentityFile+CA,易审计。 |
PAT/OAuth,对齐 SSO。 | osxkeychain;多账户要分区或 useHttpPath。 |
| 共享机建议 | 专用用户+Principal;勿混 ssh-add。 |
一机器人一作用域;轮换单验。 | 或 store 分文件 0440,避免无锁同写。 |
| 典型坑 | 证书过期、ProxyJump 串错。 | 权限过大、未灰度轮换。 | 同 host 多仓一条键→开 useHttpPath。 |
多仓库并发拉取与冲突规避
并行度受锁与磁盘约束,勿盲目加大 xargs -P。
| 场景 | 风险 | 规避策略 |
|---|---|---|
| 并行 fetch | pack/refs 争用。 | 分目录;单裸仓串行 fetch;大仓浅克隆。 |
| 并行 clone | 同写 helper。 | 预置 token 或先串行 credential fill。 |
| 轮换窗口 | 新旧 PAT 交错。 | 双写→探针全绿→吊销旧 PAT。 |
可执行配置片段(按环境改写路径与主机名)
以下假设用户 ci、GitHub 类主机;与组织策略冲突时以策略为准。密钥分文件习惯见导读第二篇。
HTTPS(GIT_CONFIG_GLOBAL 指向)
[credential]
helper = osxkeychain
useHttpPath = true
[credential "https://github.com/org/"]
username = ci-bot
[http]
postBuffer = 524288000
SSH(节选)
Host github.com
User git
IdentityFile ~/.ssh/id_ed25519_ci
CertificateFile ~/.ssh/id_ed25519_ci-cert.pub
IdentitiesOnly yes
CI 设 GIT_TERMINAL_PROMPT=0、BatchMode yes。
验证步骤(基线合格)
- 身份:
ssh -T git@github.com与git ls-remote <url>与预期机器人一致。 - 轮换:更新 PAT 后删旧钥匙串项再拉;可用
git credential reject演练。 - 并发:同裸仓两路
fetch无 ref 损坏;多仓并行抽样无 401 抖动。
最小权限验收清单(可打印)
- □ 自动化身份独立 Unix 用户或 HOME,不与人工共用默认钥匙串分区。
- □ HTTPS 已
useHttpPath或等效按路径分流。 - □ PAT/证书到期前 7 天进入轮换窗口并有失败告警。
- □ CI 导出
GIT_TERMINAL_PROMPT=0,无密码悬挂。 - □ 吊销旧令牌后探针仓库仍全绿。
FAQ
详细问答见页内 FAQPage JSON-LD;此处仅列标题:多 PAT 覆盖、并发 401、SSH/HTTPS 混用。