遇到 HTTPS 认证失败怎么办
最近不少开发者在操作 Git 时遇到了 remote: Invalid username or token. Password authentication is not supported for Git operations 的报错。这是因为 GitHub 已不再支持通过账号密码进行 HTTPS 推送,我们需要切换到 SSH 密钥模式来解决这个问题。
1. 生成 SSH 密钥
在终端执行以下命令生成密钥对:
ssh-keygen -t ed25519 -C "[email protected]"
这里的 -t 参数指定了密钥类型。推荐使用 ed25519,相比传统的 RSA,它基于椭圆曲线算法,不仅更安全、密钥更短,而且验证速度也更快。按提示一路回车即可,默认保存在 ~/.ssh/ 目录下。
2. 将公钥添加到 GitHub
生成完成后,查看并复制公钥内容:
cat ~/.ssh/id_ed25519.pub
登录 GitHub,进入 Settings -> SSH and GPG keys -> New SSH key。将刚才复制的内容粘贴进去,Title 随便起一个方便识别的名字,密钥类型保持默认的 Authentication key,点击 Add SSH key 保存。

3. 修改远程仓库地址
现在需要把本地仓库的远程地址从 HTTPS 改为 SSH 格式。在项目根目录执行:
git remote set-url origin [email protected]:username/reponame.git
记得把 username 和 reponame 替换成你自己的 GitHub 用户名和仓库名。这一步相当于告诉 Git 以后通过这个新的 SSH 通道去连接服务器。
4. 测试连接是否成功
配置完密钥后,先别急着推代码,最好验证一下连接状态:
ssh -T [email protected]
如果看到类似下面的提示,说明 SSH 配置没问题:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这里的 username 会显示为你的 GitHub 用户名。如果一切正常,就可以继续下一步了。
5. 首次推送与后续操作
最后尝试推送代码:
git push -u origin master
这次应该能直接成功,不会再弹窗让你输密码或 Token。其中 -u 参数是 --set-upstream 的简写,它建立了本地 master 分支和远程 origin/master 的关联。以后只需要写 git push 或 git pull 即可,无需再输入那一长串命令。


