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

悠悠 2023-10-07 20:11 92阅读 0赞

设备信息
系统:win10
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).
在网上查询了若干方法之后仍旧没有效果,比如:

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

在 ~/.ssh 目录下增加 config 或者 authority_keys 文件。
别加了,设置了也没用,因为新版的 git 不认可你在自己这个目录下的设置文件。

说最新版本的 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

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

可能会遇到没有权限,就要使用管理员权限修改

f1ca95f1ae0048ddbedb15257d05f75f.png

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读