连接到 gitlab 时使用 ssh 面临身份验证失败

Posted

技术标签:

【中文标题】连接到 gitlab 时使用 ssh 面临身份验证失败【英文标题】:Facing authentication failure with ssh when connecting to gitlab 【发布时间】:2020-08-15 15:38:07 【问题描述】:

当尝试从 gitlab 克隆 git 帐户时,

git clone git@gitlab.com:username/project.git

面临以下错误,

git@gitlab.com:权限被拒绝(公钥)。致命:无法读取 来自远程存储库。

gitlab 使用我的 custom.pub 公钥注册。 Windows 客户端 PC 的私有和公共 ssh 密钥都存储在“C:/Users/username/.ssh”中。

如何解决此故障

【问题讨论】:

这能回答你的问题吗? Setting a custom path for git private SSH key on linux 其中一个答案确实与此处提出的解决方案相匹配,但问题在语义上有所不同。在那里,用户无法访问“./ssh”位置。在这里,用户不知道自定义命名密钥需要特殊说明才能使 SSH 工作。这里的用户可以完全控制 .ssh 目录,因此修复很容易。我建议这两个问题都存在,它将使社区经历的两个不同用例受益。 【参考方案1】:

此答案适用于 Windows。也应该适用于经过一些修改的 Linux 机器。

由于 ssh 密钥是使用自定义名称“custom.pub”创建的,因此 ssh 无法使用该密钥。默认情况下,它会查找“id_ecdsa”/“id_rsa”命名的密钥文件。以下是修复此类身份验证错误的步骤,

    首先检查 ssh 当前尝试为 gitlab 使用什么密钥:转到 cmd,ssh -v git@gitlab.com 如果它没有吐出你在 gitlab 注册的密钥,那么你应该告诉 ssh 选择正确的密钥。这可以通过 .ssh/config 文件中的设置来完成

    打开 .ssh/config 文件并进行以下更改,

    主机 *gitlab.com

      IdentityFile <your_custom_key_path>/custom_key
    

【讨论】:

以上是关于连接到 gitlab 时使用 ssh 面临身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章

如何使用没有密码的 SSH 身份验证连接到 Windows SFTP 服务器? [复制]

使用 ssh 密钥连接到 gitlab 项目

无法通过 SSH 连接到 Gitlab

Git 问题:“ssh:连接到主机 gitlab 端口 22:连接被拒绝”

SSH 使用公钥(不是私钥)进行身份验证

ssh:连接到主机 gitlab.com 端口 22:网络不可达