如何解决GitHub推送代码时需重复生成令牌的问题?
解决GitHub每次推送需重复生成令牌的问题
GitHub在2021年8月正式移除了密码认证方式,强制使用个人访问令牌(PAT)或SSH密钥进行身份验证。你每次推送都要重新生成令牌,本质是因为没有配置本地凭证存储,导致Git每次都需要重新验证身份。以下是几种可行的解决方法:
方法一:配置Git凭证持久化存储
通过配置Git的凭证助手,让令牌保存在本地系统的安全存储中,无需每次输入:
- 首先确保你已经生成了带有
repo权限的个人访问令牌(生成后务必保存好,GitHub只会显示一次) - 临时缓存令牌(默认15分钟):
git config --global credential.helper cache - 长期缓存令牌(例如设置缓存1周,单位为秒):
git config --global credential.helper 'cache --timeout=604800' - 不同系统的永久存储配置:
- Windows:
git config --global credential.helper manager-core - macOS:
git config --global credential.helper osxkeychain - Linux(以Ubuntu为例):
先安装依赖:
编译并配置Git凭证助手:sudo apt-get install libsecret-1-0 libsecret-1-devcd /usr/share/doc/git/contrib/credential/libsecret && sudo make git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
- Windows:
方法二:改用SSH密钥认证(推荐)
SSH密钥认证无需每次输入令牌,是更便捷安全的方式:
- 生成SSH密钥:
按回车使用默认路径和空密码即可。ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱" - 将公钥添加到GitHub:
打开~/.ssh/id_ed25519.pub文件,复制全部内容,粘贴到GitHub账号的「Settings → SSH and GPG keys」页面的「New SSH key」中。 - 修改本地仓库的远程地址为SSH格式:
git remote set-url origin git@github.com:你的GitHub用户名/仓库名.git - 测试连接:
看到提示ssh -T git@github.comHi [用户名]! You've successfully authenticated, but GitHub does not provide shell access.即表示配置成功,之后推送拉取无需输入任何凭证。
方法三:将令牌嵌入HTTPS远程地址(不推荐)
如果坚持使用HTTPS,可以直接把令牌写入远程仓库地址,避免每次输入,但存在令牌泄露风险(会保存在.git/config文件中):
git remote set-url origin https://你的令牌@github.com:你的GitHub用户名/仓库名.git
注意事项
- 生成个人访问令牌时,务必勾选
repo权限,否则无法正常推送代码。 - 如果之前有旧的凭证缓存导致异常,可以执行
git credential-cache exit清除临时缓存,或在系统凭证管理器中删除GitHub相关条目。
内容的提问来源于stack exchange,提问作者parantap bhardwaj
相关产品推荐
相关产品推荐

