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

2023-11-15

目录

问题

原因

基于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!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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