Git 在错误的位置查找我的 SSH 密钥

Git looking for my SSH key in the wrong location

我一直有点头疼,因为我试图拉下 Gitlab 中的一个存储库。顺便说一句,如果有帮助的话,这一切都是在 Ubuntu VM 上的 Windows 8.1 中完成的。我已经在 Gitlab 中添加了我的 public 密钥,并将我的私钥添加到 ssh-agent 中……一切似乎都是正确的。

当我尝试做一个 git 时,这就是我 运行 遇到问题的地方。在我看来,Git 只是在错误的位置查找,我的私钥存储在 c/Users/Neil/.ssh 中,但似乎 git 在查找 c/Users/Neil /.ssh/342/200/217 ...

C:\Users\Neil\code\homestead>git pull
no such identity: /c/Users/Neil/.ssh/id_rsa207: No such file or directory
git@git.mgmt.local's password:

我不知道为什么 git 会看那里,还是我想错了?任何人都可以为我阐明一些事情吗?

GitLab 本身并不在寻找您的 ssh 密钥:作为客户端,您正在使用 ssh 联系 GitLab,这意味着只有 openssh 在寻找这些密钥。

它 (openssh) 会在以下位置找到它们:

  • %HOME%\.ssh(因此请检查环境变量 HOME 设置的内容)
  • %HOME%\.ssh\config(IdentifiyFile 指令可以为 ssh 私钥设置自定义路径,因此请检查您是否有 .ssh/config 文件)

OP Neil Kelsey confirms %HOME%\.ssh\config 造成某种干扰。

并且推送 url 似乎仍在引用 https url。
一个简单的 git remote set-url --push origin <ssh/url> 解决了这个问题。

对于 macOS 用户,可以通过 运行 以下命令修复此问题:

rm ~/.ssh/known_hosts # remove previous hosts
ssh-add -A # add all known SSH keys

在运行以上命令后,问题应该得到解决。