遇到 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 更安全、密钥更短且速度更快。如果系统不支持该类型,也可以用 rsa 代替。
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 替换成你自己的用户名和仓库名。
4. 测试连接
执行以下命令验证 SSH 是否生效:
ssh -T [email protected]
如果看到类似这样的返回,说明配置成功:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这里的 username 显示为你的 GitHub 用户名,之后就可以正常操作了。
5. 首次推送
现在可以提交代码了:
git push -u origin master
参数 -u 等同于 --set-upstream,它会将本地的 master 分支与远程的 origin/master 关联起来。配置好这一步后,以后只需要写 git push 或 git pull 即可,再也不用每次输密码或 Token 了。


