问题 Git找不到.ssh


在Windows上使用msysgit的问题;它找不到.ssh / id_rsa,即使它存在于应有的位置。

我用ssh -v git@github.com验证了这个问题;当且仅当我使用-i选项将其明确指向正确的id_rsa文件时,该命令才有效,但据我所知,git本身没有这样的选项;我无法在Google或提供的文档中找到任何内容。

奇怪的是,几个月前我上次使用git时效果很好,而且从那以后我没有改变任何东西,这似乎是一个可能的原因。

我尝试了以下,一切都没有效果:

  • 生成新的id_rsa

  • 将.ssh放在当前目录中

  • 将.ssh放在根目录中

  • 卸载msysgit并重新安装最新版本

  • 设置HOME环境变量

  • 安装TortoiseGit并尝试改为(根本不工作)

还有什么想法可以尝试吗?


1500
2018-02-18 14:29


起源

至少在linux上,ssh会接受 -vv 和 -vvv 提高详细程度 - 也许这会告诉你究竟在哪里寻找钥匙? - Cascabel
它确实接受了这些,但输出是相同的:它声称在/.ssh/id_rsa中查找,但它存在(因为我确实在根目录中放了.ssh的副本,如果明确指出ssh可以读取至)。 - rwallace
呵呵。它为什么要看 /.ssh/id_rsa 代替 $HOME/.ssh/id_rsa,无论如何? - Cascabel
如果我知道,我现在知道的比现在多! - rwallace
当你说你设置HOME时,你的意思是在shell中,对吧?你出口了吗? (我确定你做到了,我只是缺乏像你这样的想法 - 我很确定ssh只是看着 $HOME/.ssh/id_rsa所以这真的让它看起来像 $HOME 实际上是空的......) - Cascabel


答案:


找到了!

问题是有两个不同的git命令,git.exe(实际程序)和git.cmd(它设置了在Windows上工作所需的东西)。根据您在安装时设置的选项,最终可能会出现前者而非后者最终出现在路径中的情况,因此无效。然后,除非你运行git.cmd,否则关于ssh.exe的常用调试建议不起作用。

简而言之,只需确保您运行的是git.cmd而不是git.exe。


8
2018-02-19 02:30



人们如何确定这一点? - Dumle29


奇怪的是msysgit有它自己的.ssh目录:

C:\Program Files (x86)\Git\.ssh

放置你的ssh密钥应该可行。它解决了我的问题


1
2017-08-03 09:14



这仍然是这样吗?找不到此文件夹。 - John Korsnes


我在Msys / MinGW中使用git时遇到了这个问题,它无法找到我的私钥,尽管它能够很好地进入服务器。

问题是进入 ~/.ssh/config 说过:

Host github.com
IdentityFile /home/username/.ssh/id_rsa

但是,Git需要从Windows的角度来看完整路径:

Host github.com
IdentityFile c:/mingw/msys/1.0/home/username/.ssh/id_rsa

然后它奏效了。

要从msys发现此路径,请运行 cd ~/.ssh 接着 pwd -W


1
2018-05-07 23:42





窗户的方式是 将你的ssh密钥导入putty 和 使用油灰剂


0
2018-02-18 23:09



链接页面说使用putty是你在安装时选择的一个选项,但最新版本的msysgit并没有给我任何这样的选项;这改变了什么? - rwallace


我们的管理员改变了 HOMEDRIVE 在Windows上,之后像ssh这样的工具不再能找到他们的配置了。似乎 HOMEDRIVE 用作默认值 HOME


0
2017-09-18 09:46