解决 git@gitlab.com: Permission denied (publickey,gssapi-with-mic,password)

设备信息

  • 系统:win11
  • git 版本:git version 2.33.1.windows.1
  • OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021

问题描述

按照常规方法生成 ssh key ,并将 public key 添加到 gitlab 账户中后,ssh 链接失败,一直报错 permission denied:(public key; key-arcitective)

使用 $ ssh -vvv git@gitlab.com 可调试 ssh ,结果如下:

......
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
Permission denied, please try again.
git@git.bdaa.pro's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
git@git.bdaa.pro: Permission denied (publickey,gssapi-with-mic,password).

在网上查询了若干方法之后仍旧没有效果,比如:

  1. 重新生成 sshkey。

本人重新生成了 n 次,依旧没有成功连接…

  1. ~/.ssh 目录下增加 config 或者 authority_keys 文件。

别加了,设置了也没用,因为新版的 git 不认可你在自己这个目录下的设置文件。

  1. 说最新版本的 openssh 默认不能解析用 rsa 算法生成的 keys,建议我换一种算法生成 keys。

这个说对了一半吧,但我的问题根源不在这里。

分析

通过调用 $ ssh -vvv git@gitlab.com 查看详细的报错信息,我发现每次本地寻找私钥的时候都找不到对应的文件,但是这些文件的路径是正确的呀,我开始思考是不是在 ssh_config 文件中没有设置对应的路径呢?

起初,我在 .ssh 文件夹下建立了 config 文件,并做了一些设置,但是再次调试发现,ssh 运行时并没有使用我在 config 里的设置。

于是,我找到了 git 安装目录下的 ssh_config: C:\Program Files\Git\etc\ssh\ssh_config

发现里面大部分的设置都被注释掉了(恍然大悟,应该就是在这里设置了)

解决方法

在 git 安装目录下,找到 ssh_config 文件( C:\Program Files\Git\etc\ssh\ssh_config),做出如下设置:

Host *
	IdentityFile ~/.ssh/id_rsa  # 写明 key 的位置
	HostkeyAlgorithms +ssh-rsa  # 使 openssh 支持 rsa 算法
	PubkeyAcceptedAlgorithms +ssh-rsa
	PubkeyAcceptedKeyTypes +ssh-rsa

重新用 ssh 连接远程库,连接成功!!!

  • 40
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值