几个星期以来,我不能从远程存储库中拉或推到远程存储库中。我以为这是在升级到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可执行文件。

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


当前回答

@yabin ya说的是一个很酷的解决方案,只是提醒你:如果你仍然遇到同样的问题,去设置-版本控制- github,并使用ssh取消克隆git存储库。

其他回答

我最近(2018年2月)在WebStorm上遇到了这个问题,(当时)以前的解决方案都不适合我。在花了几个小时进行故障排除和研究后,我安装了2018年EAP版本,现在它可以工作了!


IntelliJ Idea > VCS/Git子系统于2017年12月报告的新问题,该问题在181.2445版本(或2018年1月31日之后的任何最新版本)中得到修复。

另请参阅post Update-ssh-key-to-use-new-passphrase

如果所有这些都失败了,只要回到你的终端,从你的文件夹中输入:

git push origin master

这是众神最初想要的样子。

您需要生成一个新的SSH密钥并将其添加到您的SSH -agent。你应该点击这个链接。

在您创建公钥并将其添加到您的github帐户后,您应该在Intellij Idea中的设置->版本控制-> Git -> SSH可执行文件下使用内置(不是本机)选项。

我们最近从IntelliJ 12更新到IntelliJ 14 Ultimate,我们也遇到了这个问题。我们的解决方案是在设置中禁用代理。我们也曾经不记得密码,但可能不确定这是否有帮助。 代理设置在文件设置-外观和行为-系统设置- http代理下。

我通过删除PuTTY中的ssh密钥密码解决了这个问题。