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

Git在错误的位置查找我的SSH密钥,git,ssh,gitlab,ssh-keys,Git,Ssh,Gitlab,Ssh Keys,我一直有点头疼,因为我试图拆除Gitlab中的一个存储库。顺便说一句,如果有帮助的话,这些都是在Windows8.1的Ubuntu虚拟机上完成的。我已经在Gitlab中添加了我的公钥,并将我的私钥添加到ssh代理。。。一切似乎都是正确的 当我尝试做git pull时,这就是我遇到问题的地方。在我看来,Git只是找错了位置,我的私钥存储在c/Users/Neil/.ssh中,但Git似乎在找c/Users/Neil/.ssh/342/200/217 C:\Users\Neil\code\homes

我一直有点头疼,因为我试图拆除Gitlab中的一个存储库。顺便说一句,如果有帮助的话,这些都是在Windows8.1的Ubuntu虚拟机上完成的。我已经在Gitlab中添加了我的公钥,并将我的私钥添加到ssh代理。。。一切似乎都是正确的

当我尝试做git pull时,这就是我遇到问题的地方。在我看来,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_rsa\342\200\217: No such file or directory
git@git.mgmt.local's password:

我不知道git为什么会去那里,或者我是不是想错了?有人能帮我解释一下吗?

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

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

  • %HOME%\.ssh
    (因此请检查环境变量
    HOME
    设置为什么)
  • %HOME%\.ssh\config
    (其中IdentificationFile指令可以为ssh私钥设置自定义路径,因此请检查是否有
    .ssh/config
    文件)
确认
%HOME%\.ssh\config
造成了某种干扰

推送url似乎仍然引用https url。

一个简单的
git远程设置url--push origin
修复了这个问题。

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

rm~/.ssh/known#u hosts#删除以前的主机
ssh add-A#添加所有已知的ssh密钥

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

您是否从VM中生成了ssh密钥?不,我没有,我使用了putty keygen,这不重要,对吗?所以我检查了我的主目录是否设置为正确的位置,以便在正确的文件夹%home%/.ssh中找到密钥,并且在该文件夹中我确实有一个配置文件,我相信它正确读取了我的主机文件;主机git.mgmt.local主机名git.mgmt.local IdentityFile~/.ssh/id_rsa‏ 还有一个名为'id_rsa'@NeilKelsey的私钥保存在该位置,您可以在没有配置文件的情况下尝试吗?如果您使用的是完整的ssh url,则不应该需要配置文件,尤其是当公共和私有ssh密钥有其默认名称(
id\u rsa.pub
id\u rsa
中的
%HOME%\.ssh
)在该url上扩展时。。。我打开了一个Git BASH终端从C /用户在我的Windows机器,并在该终端键入“$回声$ home”,这给了我什么,我认为是正确的结果“C /用户/尼尔”…在这个文件夹中有我的.ssh文件夹,其中包含我的配置文件和keys@NeilKelsey好的,我自己也喜欢一个简单的cmd会话,打开时只是在磁盘上移动便携git。ssh密钥的路径是ssh配置中的完全限定路径。很容易在vim中编辑。我只需要意识到.ssh目录有一个自己的配置文件,它实际上正在使用(有意义),更重要的是,它有完全限定的路径(考虑到该软件被称为portable git,这就没有意义了)。谢谢你给我指出了正确的方向。“
sudo rm~/.ssh/known_hosts
”为什么要在
~/
中使用
sudo
文件?你说得对,这是不必要的。