几个星期以来,我不能从远程存储库中拉或推到远程存储库中。我以为这是在升级到IntelliJ IDEA 14时发生的,但我也可以用IDEA 13.1.5重现这个问题。

工具提示说 “获取失败 致命:无法从远程存储库读取。"

版本控制选项卡中的异常为

14:02:37.737: cd C:\dev\project
14:02:37.737: git -c core.quotepath=false fetch origin --progress --prune
java.io.IOException: Padding in RSA public key!
    at com.trilead.ssh2.signature.RSASHA1Verify.decodeSSHRSAPublicKey(RSASHA1Verify.java:37)
    at com.trilead.ssh2.KnownHosts.addHostkey(KnownHosts.java:98)
    at com.trilead.ssh2.KnownHosts.initialize(KnownHosts.java:414)
    at com.trilead.ssh2.KnownHosts.initialize(KnownHosts.java:440)
    at com.trilead.ssh2.KnownHosts.addHostkeys(KnownHosts.java:137)
    at org.jetbrains.git4idea.ssh.SSHMain.configureKnownHosts(SSHMain.java:462)
    at org.jetbrains.git4idea.ssh.SSHMain.start(SSHMain.java:155)
    at org.jetbrains.git4idea.ssh.SSHMain.main(SSHMain.java:137)
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

使用IntelliJ内置终端,执行git -c core。Quotepath =false fetch origin -progress -prune,它就像它应该的那样工作。

根据堆栈跟踪,我的KnownHosts似乎有问题,所以我从~/删除了我们的git服务器。ssh/known_hosts,希望IntelliJ再次插入它。但是当通过UI更新时,问题仍然出现,并且在known_hosts中没有写新的条目;考虑对文件进行缓存,我重新启动了IntelliJ,但没有成功。

当从终端进行另一次git取回时,现在我被问到是否要永久添加服务器。之后,它再次被写入known_hosts,但IntelliJ仍然不让我更新我的项目。

我还没有在网上找到任何关于这种行为的信息,所以我猜这不是新的IntelliJ版本的已知错误。尽管如此,我更新到14.0.2,但问题仍然存在。

IntelliJ被配置为使用内置的SSH可执行文件。

有人知道问题出在哪里吗?


当前回答

IntelliJ的内置SSH客户端似乎散列了它的known_hosts,但我使用的那个客户端主机名是明文形式的。

当我删除文件并让IntelliJ创建一个新的文件时,它只使用我的(散列的)GitLab服务器,没有其他任何东西,它工作了。

在IntelliJ中,也不可能将它们混合在一起——将一些非散列项与散列项放在一起。因此,您必须配置其他SSH客户机以使用散列主机。

其他回答

pyCharm,

file|
    v-->settings|
                v-->Version Control|
                                   v-->Git

这里将SSH可执行文件从内置更改为本机

然后按apply并关闭

别忘了联系你的系统管理员。

因为在我的情况下,我已经正确配置了所有东西(SSH也添加了),但我得到了同样的错误

存储库访问被拒绝。致命的:无法从远程读取 存储库。

原因是我只有读访问权限。因此,不要浪费你宝贵的时间,请检查作为第一件事。 谢谢你!

进入首选项>版本控制> Git。确保SSH可执行文件设置为“本机”。(如果已经是这样,切换到“内置”,应用它,然后再次切换回“原生”。)

如果这不能解决你的问题,我建议下载一个Git客户端,如GitHub客户端(免费桌面应用程序),并尝试通过应用程序同步你的项目。然后返回IntelliJ,检查它是否工作。

什么都帮不了我。然后我看到计算机上的项目名称与git存储库中的名称不同。

所以我解决了这个问题。

我尝试了上面所有的解决方案(本机,更改VCS存储库的url,更新Git,更新IDEA,使缓存无效),但没有帮助我。最后我找到了适合我的解决办法。

解决方案:我关闭了Idea,并将文件~\.IntelliJIdea20xx.x\config\options\git.xml的内容替换为:

<application>
  <component name="Git.Application.Settings">
    <option name="SSH_EXECUTABLE" value="IDEA_SSH" />
  </component>
</application>

然后我开始了IDEA,尝试签出SSH GIT存储库,它可以工作,现有的项目也可以工作。有趣的事实是,当我切换到本机的想法设置,存储库不工作。