Git推送至GitHub时个人访问令牌(Token)不生效报错如何解决?
问题原因与解决步骤
核心问题说明
你遇到的两次报错分别对应两个常见问题:
- 第一次提示密码认证已废弃,是因为本地Git凭据管理器缓存了旧的密码认证信息,你输入的token没有被系统正确读取,依然用旧的密码规则提交认证。
- 第二次返回403权限不足,是因为生成的个人访问令牌(PAT)缺少对应权限、已过期,或是远程仓库地址的用户名、仓库名拼写错误。
操作步骤
步骤1:清理本地Git缓存的旧凭据
根据你使用的操作系统执行对应操作:
- Windows:打开控制面板→用户账户→凭据管理器→Windows凭据,找到所有
git:https://github.com相关的条目,全部删除。 - macOS:打开钥匙串访问(Keychain Access),搜索
github.com,找到类型为「互联网密码」的相关条目,全部删除。 - Linux:执行命令
git config --global --unset credential.helper,临时禁用凭据缓存,后续验证成功后可按需重新配置。
步骤2:确认PAT的权限与有效期
生成PAT时必须勾选对应权限,否则会触发权限不足报错:
- 如果你生成的是经典(classic)PAT,必须勾选
repo完整权限,若要推送关联包还需要勾选write:packages,私有仓库必须配置该权限。 - 如果你生成的是细粒度(fine-grained)PAT,需要在仓库访问范围中选中你要推送的目标仓库,然后在仓库权限设置中将
Contents权限设为「读写」。
同时确认你使用的PAT仍在有效期内,过期令牌需要重新生成。
步骤3:重新配置远程仓库并推送
先确认GitHub上的用户名、仓库名拼写完全正确,区分大小写,然后选择两种配置方式中的任意一种即可:
方式一:带token的远程地址(临时使用)
git remote remove origin # 将[TOKEN]替换为你的个人访问令牌,[USER]替换为GitHub用户名,[REPO]替换为仓库名 git remote add origin https://[TOKEN]@github.com/[USER]/[REPO].git git push -u origin main
方式二:常规弹窗验证(长期使用)
git remote remove origin # 直接使用普通HTTPS地址,不需要携带token git remote add origin https://github.com/[USER]/[REPO].git git push -u origin main
弹出验证窗口时,用户名输入你的GitHub用户名,密码位置直接粘贴PAT即可。
可选优化方案:使用SSH认证
如果不想频繁处理token过期问题,可以改用SSH协议连接GitHub:
- 本地生成SSH密钥,将公钥添加到GitHub账户的SSH密钥设置中
- 重新配置远程地址:
git remote set-url origin git@github.com:[USER]/[REPO].git - 直接执行push操作,无需输入密码或token。
内容的提问来源于stack exchange,提问作者user1245262
相关产品推荐
相关产品推荐

