解决 [email protected]: 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 [email protected] 可调试 ssh ,结果如下:

......
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
Permission denied, please try again.
[email protected]'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.
[email protected]: Permission denied (publickey,gssapi-with-mic,password).

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

  1. 重新生成 sshkey。

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

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

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

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

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

分析

通过调用 $ ssh -vvv [email protected] 查看详细的报错信息,我发现每次本地寻找私钥的时候都找不到对应的文件,但是这些文件的路径是正确的呀,我开始思考是不是在 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 连接远程库,连接成功!!!

你可能感兴趣的:(环境配置,git,ssh,gitlab,debug)