
Git 的认证方式以及Git如何缓存凭证

一、什么是 Git 凭证缓存?
Git 在通过 HTTPS 访问远程仓库时,需要输入用户名和密码。为了避免频繁输入,Git 提供了多种凭证缓存方式,提升开发效率。
二、git credential.helper cache 的使用
- 作用:临时将你的凭证(如用户名和密码或 Token)缓存到本地内存,短时间内无需重复输入。
- 配置命令:
bashgit config --global credential.helper cache
- 默认缓存时间:15 分钟(900 秒)。
- 自定义缓存时间:
bashgit config --global credential.helper 'cache --timeout=3600'
上例为缓存 1 小时。
- 注意事项:仅在本地内存缓存,重启电脑或超时后需重新输入。适合临时开发环境,不建议生产环境长期使用。
三、实现永久缓存的方式
1. credential.helper store
- 作用:明文保存凭证到
~/.git-credentials,永久有效。 - 配置命令:
bashgit config --global credential.helper store
- 安全性:明文保存,存在泄露风险,仅适合个人开发环境。
2. 操作系统密钥链(推荐、安全)
- Windows:
bashgit config --global credential.helper manager-core
- macOS:
bashgit config --global credential.helper osxkeychain
- Linux:
可用
libsecret等集成。 - 优点:凭证安全地存储在操作系统密钥管理器中,既能永久保存,也更安全。
四、GitHub 认证变更与个人访问令牌(PAT)
-
GitHub 已禁用密码认证,必须使用个人访问令牌(PAT)。
-
生成方式:
- 进入 GitHub 设置 → Developer settings → Personal access tokens
- 生成新令牌,选择合适权限(如
repo)。 - 复制令牌,保存好(只显示一次)。
-
使用方式:
- 用户名:你的 GitHub 用户名
- 密码:你的个人访问令牌
-
令牌粘贴技巧:
- Windows:
Ctrl + Shift + V或鼠标右键 - Mac:
Command + V - Linux:
Ctrl + Shift + V - 输入密码时终端不显示字符,粘贴后直接回车即可。
- Windows:
五、使用 SSH 认证(推荐)
优点:安全、免输入、适合频繁操作
配置步骤:
- 生成密钥
bashssh-keygen -t rsa -b 4096 -C "你的邮箱"
-
若卡住,尝试直接回车、换终端、指定文件名
-f ~/.ssh/id_rsa。 -
添加公钥到 GitHub
- 复制
~/.ssh/id_rsa.pub内容,添加到 GitHub → Settings → SSH and GPG keys。
- 复制
-
测试连接
bashssh -T git@github.com
- 使用 SSH 地址操作仓库
bashgit clone git@github.com:用户名/仓库名.git
或修改远程地址:
bashgit remote set-url origin git@github.com:用户名/仓库名.git
六、常见认证错误及解决方法
| 错误信息 | 原因及解决方法 |
|---|---|
| Password authentication is not supported | 用 PAT 替代密码 |
| Write access to repository not granted | 没有写权限,请 Fork 或申请协作权限 |
| 令牌无法粘贴到终端 | 换快捷键、用记事本中转、直接手动输入 |
| ssh-keygen 卡住 | 换终端、直接回车、指定文件名、检查权限 |
七、凭证缓存方式对比表
| 方式 | 是否永久 | 安全性 | 适用场景 |
|---|---|---|---|
| cache | 否 | 中 | 临时开发环境 |
| store | 是 | 低 | 个人环境 |
| manager/osxkeychain | 是 | 高 | 推荐,通用 |
| SSH | 是 | 高 | 推荐,通用 |
八、总结建议
- 临时使用可选
cache,长期建议用store或操作系统密钥链,推荐 SSH 认证。 - GitHub 操作请用个人访问令牌(PAT),不要再用密码。
- 遇到权限或认证问题,优先检查凭证和远程仓库地址。