git clone/push私有仓库报错:remote: Invalid username or token. Password authentication is not supported
摘要 GitHub已停止支持账号密码的HTTPS推送方式。本文介绍了使用SSH密钥进行长期推送的解决方案:1) 使用ssh-keygen命令生成ED25519算法密钥;2) 将公钥添加到GitHub账户的SSH设置中;3) 通过ssh -T命令测试连接;4) 首次推送时使用git push -u origin master建立分支关联。该方法比传统RSA更安全高效,配置成功后无需每次输入密码,后续
原因分析及解决办法:
由于Github不再支持使用账号密码进行https推送,可以采用 ssh 密钥的方式进行长期的推送
1.生成SSH key
ssh-keygen -t ed25519 -C "your_email@example.com"
这里的-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” 即可
4.连接github
ssh -T git@github.com
如果显示
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即可,不需要每次都写一长串了
更多推荐
所有评论(0)