Git bash命令行密码登录失败,提示remote: Support for password authentication was removed。避免每次都要输入密码

目录

问题

原因

基于HTTPS协议

1. 创建token令牌

2. 重新设置远程仓库地址

基于SSH协议

1. 检查系统中是否已存在SSH keys

2. 生成新的SSH keys

3. 将SSH keys的公钥添加到你的Github账户

4. 测试SSH链接

5. 重新设置远程仓库地址


问题

        在Git bash操作时,不断提示登录,使用账号密码登录失败,但是密码正确。命令行可能会出现提示 "remote: Support for password authentication was removed..."

原因

       Github对于所有需要身份验证的 Git 操作都不支持使用账号密码进行身份验证,而是使用基于令牌的身份验证。详情见:​​​​​​https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

        针对于Git bash(命令行),常用的我们可以使用基于HTTPS协议或者SSH协议进行身份验证。

基于HTTPS协议

1. 创建token令牌

        参见官方文档,有图文讲解:Creating a personal access token - GitHub Docs

2. 重新设置远程仓库地址

查看远程仓库地址

git remote -v         
origin  https://github.com/passerbyYSQ/mybatis-ysq.git (fetch)
origin  https://github.com/passerbyYSQ/mybatis-ysq.git (push)

重新设置远程仓库地址,在地址中植入第1步生成的token

git remote set-url origin https://<token>@github.com/<用户名>/<仓库名>.git

例如:
git remote set-url origin https://ghp_8VJ3hW...@github.com/passerbyYSQ/mybatis-ysq.git

如果出现类似以下报错:

fatal: unable to access 'https://github.com/passerbyYSQ/mybatis-ysq.git/': OpenSSL SSL_read: Connection was reset, errno 10054

则执行下面命令后重试

git config --global http.sslVerify "false"

基于SSH协议

1. 检查系统中是否已存在SSH keys

 ls -al ~/.ssh

  注意:

        (1)在Windows中,下面命令需要在Git bash(安装Git的时候顺带安装上)中输入,否则普通cmd是识别不了ls这个Linux命令的

        (2)在Linux中"~"代指当前用户的家目录,在Windows中也是如此。比如当前是Administrator用户,那么"~"的实际路径一般就是:C:\Users\Administrator

        (3)如果存在SSH keys,会类似如下图所示。否则 ".ssh" 目录为空甚至不存在

2. 生成新的SSH keys

        仍然是在Git bash中,输入以下命令

ssh-keygen -t ed25519 -C "<你的电子邮箱或者其他描述信息>"

例如:ssh-keygen -t ed25519 -C "xxx@qq.com"

           期间会提示你 SSH keys的保存路径 和 生成SSH keys用到的随机盐,直接回车就行了。看保存路径,你会发现,会保存在第1步中说的当前用户的家目录的.ssh目录下

3. 将SSH keys的公钥添加到你的Github账户

https://github.com/settings/ssh/new

         点击上述链接,将第2步生产的以 ".pub" 结尾的文件内容复制出来,粘贴到上述链接的文本框中保存。

4. 测试SSH链接

        依旧是在Git bash中,输入下述命令。中途可能会提示你是否信任Github主机,直接输入yes表示信任并建立连接,出现如图表示成功。

ssh -T git@github.com

         如果出现以下报错,就是私钥文件(上图中的 id_ed25519 文件)的权限太宽泛了。在Win10系统下,需要设置此私钥的文件的权限。

PS C:\vm\share_vm> ssh -i .\id_rsa  root@192.168.56.101
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '.\\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key ".\\id_rsa": bad permissions
root@192.168.56.101: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  1. 禁用权限继承
  2. 设置成只有当前系统用户完全控制,其他权限删除掉
  3. 重新测试链接,就会出现上图的成功提示了

详情参考:真正解决 windows OpenSSH WARNING: UNPROTECTED PRIVATE KEY FILE!_coder_jo的博客-CSDN博客

 

5. 重新设置远程仓库地址

# 查看远程仓库
git remote -v

# 更新远程仓库地址
git remote set-url origin git@github.com:<用户名>/<仓库名>.git

         这个时候,你对远程仓库操作,就不需要通过输入密码或者token建立连接并进行身份认证了,而是通过SSH加密方式进行安全通信。

        关于SSH的原理,自己没有总结过,也是一知半解,必要单独总结一篇文章。TODO!!!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值