无法使用Windows使用SSH密钥访问GitLab存储库

4

我遵循了这些指示,使用ssh-keygen生成密钥对。事实上,我生成了ed25519和rsa密钥,因为我试图弄清楚问题所在。

我按照他们的说明复制并粘贴了这些密钥对的公共密钥到gitlab中。

当我输入:ssh -T git@gitlab.com时,它显示:

client_global_hostkeys_private_confirm: server gave bad signature for RSA key 0

但它也说 Welcome to gitlab, @my_username!

当我尝试推送到我的存储库时,弹出窗口要求输入我的gitlab用户名和密码,我输入后失败了。

我不明白为什么它提示我输入用户名和密码,考虑到我已经尝试建立SSH密钥对进行身份验证。

欢迎提供任何建议。


1
也许你是通过 https 克隆的,而不是 ssh? - ti7
我几乎可以确定我使用了SSH方法。 - unbutu
1
尝试使用 git remote -v 命令,它应该会显示远程 URL,并且至少包含一个 @ 符号。 - ti7
1个回答

12

我收到一个弹窗要求输入我的gitlab用户名和密码,我输入后失败了。

按照评论所说,检查以下内容:

  • git remote -v
  • git config credential.helper

如果第一个以https://开头,第二个不为空,那么你看到的是Git凭证助手尝试缓存你的HTTPS凭证。
这意味着你的SSH密钥将无法使用。

关于错误信息,请参考此线程,并测试以下命令:

ssh -o UpdateHostKeys=no -Tv git@gitlab.com

要使其持久化,在~/.ssh/config中:

Host gitlab.com
  UpdateHostKeys no

运行 git remote -v 后,我看到了 https:// 前缀。使用 UpdateHostKeys=no 命令进行测试似乎有效。我不确定如何纠正它使用 https:// 而不是 ssh 并试图“帮助”凭据助手的问题。我想能够使用我的 ssh 密钥并只推送到存储库。感谢提供链接。 - unbutu
如果你看到 https:// 并想使用你的 SSH 密钥,你需要切换到 SSH,命令如下:git remote set-url origin git@github.com:<me>/<myrepo>.git - VonC
谢谢。这帮了很多忙。 - unbutu
@VonC也许你应该将链接中提到的答案转录到这里的答案中,因为链接可能会随着时间而失效。无论如何,它对我确实起作用了,谢谢。(我的意思是他建议将“Host gitlab.com\nUpdateHostKeys no”添加到~/.ssh/config文件中的部分,这是一个永久性的解决方案:https://www.reddit.com/r/archlinux/comments/lyazre/openssh_update_causes_problems/gpuwe3x?utm_source=share&utm_medium=web2x&context=3) - VinGarcia
1
@VinGarcia 很好的观点。我已经相应地编辑了答案。如果我漏掉了什么,请随时添加您自己的编辑。 - VonC
1
谢谢,你写的很完美,我点赞了这个答案 =] - VinGarcia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接