fatal: Authentication failed 错误可通过五种方法修复:一、改HTTPS并启用凭据缓存;二、配置SSH密钥免密认证;三、HTTPS URL中嵌入个人访问令牌;四、清除系统中错误缓存的凭证;五、禁用或修正代理配置干扰。

如果您尝试克隆远程 Git 仓库,但收到 fatal: Authentication failed 错误,则说明 Git 无法通过当前认证方式访问目标仓库。以下是多种可立即执行的配置修复方法:
一、检查并更新远程仓库 URL 为 HTTPS 并启用凭据缓存
该方法适用于使用 HTTPS 协议克隆且未保存登录凭证的场景,Git 会尝试从系统凭据管理器中读取用户名和密码(或个人访问令牌)。
1、打开终端或命令行工具。
2、执行命令查看当前远程地址:git remote get-url origin。
3、若显示为 SSH 地址(如 git@github.com:user/repo.git),则切换为 HTTPS 地址:git remote set-url origin https://github.com/user/repo.git(请将域名和路径替换为实际仓库地址)。
4、配置 Git 使用系统凭据存储:git config --global credential.helper store(Windows/macOS/Linux 均适用)。
5、再次运行 git clone https://github.com/user/repo.git,首次执行时会提示输入用户名和密码(GitHub/GitLab 等平台需使用 个人访问令牌(PAT)代替密码)。
二、改用 SSH 协议并配置 SSH 密钥对
该方法绕过密码/令牌验证,依赖本地私钥与远程服务器公钥配对完成身份认证,无需每次输入凭证。
1、检查是否已存在 SSH 密钥:ls -al ~/.ssh/id_rsa.pub(Linux/macOS)或查看 %USERPROFILE%\.ssh\id_rsa.pub(Windows)。
2、若无密钥,生成新密钥对:ssh-keygen -t ed25519 -C "your_email@example.com",按回车接受默认路径与空密码(或设密码)。
3、启动 ssh-agent 并添加私钥:eval "$(ssh-agent -s)",然后执行 ssh-add ~/.ssh/id_rsa(Linux/macOS)或 ssh-add %USERPROFILE%\.ssh\id_rsa(Windows)。
4、复制公钥内容:cat ~/.ssh/id_rsa.pub(Linux/macOS)或使用记事本打开对应 .pub 文件(Windows)。
5、将公钥内容完整粘贴至代码托管平台的 SSH Keys 设置页(如 GitHub Settings → SSH and GPG keys → New SSH key)。
6、修改远程 URL 为 SSH 格式:git remote set-url origin git@github.com:user/repo.git。
7、执行 git clone git@github.com:user/repo.git,验证是否免密成功。
三、在 HTTPS URL 中直接嵌入令牌或用户名
该方法适用于临时调试或 CI/CD 环境,将认证信息编码进 URL,跳过交互式凭据提示,但需注意安全风险,不可提交至代码或公开日志。
1、在代码托管平台(如 GitHub)生成个人访问令牌(PAT),确保勾选 repo 权限(GitLab 对应 read_repository)。
2、构造带认证信息的克隆 URL:https://
3、执行克隆命令:git clone https://
4、克隆成功后,建议立即执行 git remote set-url origin https://github.com/user/repo.git 还原为纯净 URL,避免令牌泄露。
四、清除已缓存的错误凭据
该方法用于解决因之前输入错误账号密码导致系统凭据管理器持续复用无效凭证的问题,尤其在 Windows 凭据管理器或 macOS Keychain 中残留旧条目时有效。
1、Windows 用户:打开“控制面板 → 用户账户 → 凭据管理器 → Windows 凭据”,在“普通凭据”或“Git”分类下查找包含 github.com、gitlab.com 等域名的条目,点击“删除”。
2、macOS 用户:打开“钥匙串访问”应用,在右上角搜索框输入 github 或 git,定位到类型为“互联网密码”的相关条目,右键选择“删除”。
3、Linux 用户(GNOME):执行命令 git config --global --unset credential.helper 后重新设置为 store 或 cache,或手动编辑 ~/.git-credentials 文件,删除含错误凭证的行。
4、完成清理后,再次执行 git clone,系统将重新提示输入正确用户名和令牌。
五、禁用代理或检查代理配置干扰
该方法针对因 HTTP/HTTPS 代理强制拦截认证头或重写请求导致认证失败的情况,常见于企业网络或设置了全局 git proxy 的环境。
1、检查当前代理设置:git config --global http.proxy 和 git config --global https.proxy。
2、若输出非空值(如 http://127.0.0.1:8080),临时禁用代理:git config --global --unset http.proxy 与 git config --global --unset https.proxy。
3、若必须使用代理,确认代理服务支持 HTTPS 隧道(CONNECT 方法)及透传 Authorization 头;否则切换为 SSH 方式(见方法二)。
4、测试直连是否恢复认证能力:git clone https://github.com/octocat/Hello-World.git。










