最近几周,我无法从远程仓库拉取或推送代码。我以为这是升级到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
似乎存在问题,所以我从~/.ssh/known_hosts
中删除了我们的git服务器,希望IntelliJ会再次插入它。但在通过UI更新时问题仍然出现,并且known_hosts
中没有新条目被写入;考虑到文件的缓存,我重启了IntelliJ,但没有成功。
当在终端中执行另一个git fetch
时,现在我被要求是否要永久添加服务器。之后,它又被写入到known_hosts
中,但是IntelliJ仍然不允许我更新项目。
我在网上没有找到任何关于这种行为的信息,所以我猜它不是新版IntelliJ的已知错误。尽管如此,我仍然将其升级到14.0.2版本,但问题仍旧存在。
IntelliJ被配置为使用内置SSH可执行文件。
有人知道这里可能出现什么问题吗?
puttygen
和Git GUI
,因为这也是我的第一个想法。您确定是关于我的密钥对吗?异常似乎与已知主机有关:https://code.google.com/p/connectbot/source/browse/src/com/trilead/ssh2/KnownHosts.java?spec=svn1e98217978aaccfcf62097266f699acf5b22493e&r=c1e41c03ad352b00e88a926db600937f2ab06e50#137 - stuXnet