引言
最近在学 Git 的时候,遇到了一个让人头疼的错误提示:remote: invalid username or token. password authentication is not supported。作为新手,花了不少时间才搞明白怎么回事。今天就把学习心得整理出来,希望能帮到同样遇到这个问题的朋友。
1. 错误原因解析
这个错误通常出现在我们尝试用密码认证的方式向远程仓库推送代码时。现在很多 Git 托管平台(比如 GitHub、GitLab 等)出于安全考虑,已经不再支持简单的用户名 + 密码认证方式,而是要求使用更安全的 SSH 密钥或者个人访问令牌(Token)。
2. 解决方案概览
要解决这个问题,主要有两种方法:
- 使用 SSH 密钥认证
- 使用个人访问令牌(Token)
我个人更推荐使用 SSH 密钥,因为设置一次后就可以长期使用,不需要每次都输入凭证。下面我就详细说说 SSH 密钥的配置过程。
3. 生成 SSH 密钥
- 首先打开终端(Windows 用户可以用 Git Bash)
- 输入命令生成新的 SSH 密钥,系统会提示你输入保存位置和密码(可以直接回车跳过)
ssh-keygen -t ed25519 -C "[email protected]"
- 生成完成后,可以在用户目录下的
.ssh文件夹中找到新生成的密钥文件
4. 添加 SSH 密钥到 Git 托管平台
- 登录你的 Git 托管平台账户
- 找到账户设置中的 SSH 密钥管理页面
- 复制公钥文件(通常是
id_rsa.pub)的内容 - 粘贴到平台提供的输入框中并保存
5. 修改 Git 远程地址
之前你可能用的是 HTTPS 方式的远程地址,现在需要改为 SSH 方式的地址。在项目目录下执行修改远程地址的命令即可。
git remote set-url origin [email protected]:username/repo.git
6. 测试连接
配置完成后,可以通过一个简单的命令来测试 SSH 连接是否正常工作。如果一切顺利,你应该能看到认证成功的提示。
ssh -T [email protected]
7. 常见问题排查
如果还是遇到问题,可以检查以下几点:
- 确保 SSH 密钥已正确添加到托管平台
- 检查远程地址是否正确修改为 SSH 格式
- 尝试用 ssh-agent 管理密钥
- 查看更详细的错误日志
8. 个人访问令牌方式
如果不想用 SSH,也可以选择使用个人访问令牌:
- 在托管平台生成一个新的访问令牌
- 记住这个令牌(它只会显示一次)
- 推送时使用令牌代替密码
9. 实用建议
- 建议将 SSH 密钥添加到 ssh-agent,避免每次都要输入密码
- 重要的项目建议开启双因素认证
- 定期检查和更新你的访问令牌
10. 为什么推荐 SSH 方式
相比个人访问令牌,SSH 密钥有这些优势:
- 更安全,密钥对机制更难被破解
- 一次配置,长期使用
- 可以设置多个密钥管理不同项目
- 支持更复杂的认证场景
整个配置过程可能对新手来说有点复杂,但实际操作几次就会熟悉。遇到 Git 认证问题不用慌,按照这个指南一步步操作,很快就能解决。记住,编程路上遇到问题很正常,重要的是学会解决问题的思路和方法。

