解决 Git 拉取代码时报错:fatal: Authentication failed
在使用 Git 时,执行如下命令:
git pull origin master
出现报错:
remote: Verify
fatal: Authentication failed for ***
一、问题原因分析
1. 使用 HTTP 协议访问,未正确提供用户名和密码
当使用 HTTP 或 HTTPS 协议访问 Git 仓库时,Git 会要求进行身份验证。如果凭据不正确或未被缓存,就会出现认证失败。
2. Git 服务器禁用了账户密码认证,只支持 Token
现代 Git 服务可能禁用了传统密码登录,改为使用 Personal Access Token(访问令牌)作为认证凭据。
3. 仓库地址错误或无访问权限
仓库地址拼写错误、权限设置不当,也会导致访问失败。
4. 本地缓存了过期或错误的凭据
Git 可能使用了系统缓存的旧凭据,导致认证持续失败。
二、解决方法
方式一:重新输入用户名和密码 Git 可能缓存了错误的凭据
取消凭据缓存:
git credential-cache exit
git config --unset credential.helper
然后再次 pull,会重新提示输入账号密码。
方案二:使用 Token 替代密码登录
如果你使用的是 Gitea 或 GitLab、GitHub,请前往平台个人设置中生成一个 Access Token。
登录 Gitea → 用户头像 → 设置 → 应用 → 生成新的 Access Token
然后在 Git 拉取时,使用你的用户名作为账号,Token 作为密码。
方案四:删除系统中缓存的旧凭据
Windows: 打开「凭据管理器」,找到和 Git 相关的条目,删除它们。
macOS: 打开「钥匙串访问」应用,搜索 git,删除对应条目。
Linux: 如果你启用了 git-credential-cache,可通过以下命令清除缓存:git credential-cache exit
方案五:推荐改用 SSH 协议
使用 SSH 协议不需要每次输入密码,更安全也更方便:
生成 SSH 密钥(如果尚未生成):
ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
将生成的公钥添加到 Gitea 用户设置中。
修改仓库地址为 SSH 格式:
git remote set-url origin git@address.git
测试连接:
ssh -T git@ip