remote: Invalid username or token. Password authentication is not supported for Git operations.
该文章解决在新系统中进行 git 操作时,第一次的登陆问题,由于 Github 不再支持使用账号密码进行 Git https 推送,可以采用 ssh 密钥的方式进行长期的推送。
1. 生成 SSH key
ssh-keygen -t ed25519 -C "[email protected]"
这里的 -t 表示要生成的密钥类型,这里生成的类型为 ed25519,是一种椭圆曲线算法,比传统的 RSA 更加安全、密钥更短,并且速度更快。
2. 将 SSH key 添加到 GitHub 中
cat ~/.ssh/id_ed25519.pub
将输出的内容复制到 Github -> Settings -> SSH and GPG keys -> New SSH key。
如下图所示。

自己起一个 Title,密钥类型选择默认的 Authentication key 即可,然后点击 'Add SSH key' 即可。
3. 修改远程仓库为 SSH 地址
在本地仓库中输入
git remote set-url origin [email protected]:username/reponame.git
将上面的 username 和 reponame 分别替换为你的用户名和仓库名称。
4. 测试连接
ssh -T [email protected]
如果显示
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
那么就说明 SSH 的配置正确,可以进行正常的 git 操作了,这里的 username 显示为你的 GitHub 用户名。
5. 进行第一次推送
git push -u origin master
这时就会发现推送成功,不需要输入密码或者 token 了。
这里的 -u 是 --set-upstream,将本地的 master 分支与远程仓库 origin/master 关联起来,以后只需要写 git push 或者 git pull 即可,不需要每次都写一长串了。


