遇到 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,它在安全性、密钥长度和生成速度上都有优势。
2. 将公钥添加到 GitHub
查看生成的公钥内容:
cat ~/.ssh/id_ed25519.pub
复制输出的全部内容,登录 GitHub,进入 Settings -> SSH and GPG keys -> New SSH key。粘贴内容后,给密钥起个名字(Title),类型保持默认的 Authentication key,点击 Add SSH key 保存。

3. 修改远程仓库地址
回到本地项目目录,将远程仓库 URL 从 HTTPS 改为 SSH 格式:
git remote set-url origin [email protected]:username/reponame.git
记得把 username 和 reponame 替换成你自己的用户名和仓库名。
4. 测试连接
执行以下命令验证 SSH 配置是否生效:
ssh -T [email protected]
如果看到类似以下的提示,说明认证成功:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这里的 username 会显示为你的 GitHub 用户名。至此,SSH 通道已经打通。
5. 首次推送
现在可以尝试推送代码了:
git push -u origin master
这次应该不会再弹窗要求输入密码或 Token。其中 -u 参数相当于 --set-upstream,它将本地的 master 分支与远程的 origin/master 关联起来。以后只需要写 git push 或 git pull 即可,无需再重复输入长串指令。


