git与IntelliJ IDEA:无法从远程存储库读取

自从几个星期以来,我无法从远程存储库中取出或推送。 我以为它升级到IntelliJ IDEA 14时发生,但我也可以重现与IDEA 13.1.5的问题。

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

并在“版本控制”选项卡中读取exception

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的内置terminal,执行git -c core.quotepath=false fetch origin --progress --prune ,它的工作方式和它应该的一样。

根据stacktrace,我的KnownHosts似乎有问题,所以我从~/.ssh/known_hosts删除了我们的git服务器,希望IntelliJ能够再次插入它。 但是,通过UI更新时,问题仍然存在,并且在known_hosts没有写入新条目; 考虑一些caching的文件,我重新启动IntelliJ,没有成功。

当从terminal做另一个git fetch ,现在我被问到是否要永久添加服务器。 之后,它又被写入了known_hosts ,但IntelliJ仍然不会让我更新我的项目。

我没有发现任何关于这种行为的在线,所以我想这不是一个新的IntelliJ版本已知的错误。 不过,我更新到14.0.2,但问题依然存在。

IntelliJconfiguration为使用内置的SSH可执行文件。

有人有什么线索可能是这里的问题?

设置 – >版本控制 – > Git,然后在SSH可执行文件下拉菜单中selectNative

在这里输入图像说明

转到首选项>版本控制> Git。 确保SSH可执行文件被设置为“Native”(如果已经存在,将其切换为“Built-in”,应用它,然后再切换回“Native。”)。

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

IntelliJ的内置SSH客户端似乎散列它known_hosts ,但我有一个明文的主机名。

当我删除文件,并让IntelliJ创build一个新的,只有我的(哈希)GitLab服务器,没有别的,它的工作。

也不可能混合它 – 保留一些unhahed条目和IntelliJ的哈希条目。 所以,你必须configuration你的其他SSH客户端使用散列主机 。

您需要生成一个新的SSH密钥,并将其添加到您的SSH代理。 为此,你应该按照这个链接 。

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

我们最近从IntelliJ 12更新到IntelliJ 14 Ultimate,我们也遇到了这个问题。 我们的解决scheme是在设置中禁用代理。 我们也停止记住密码一次,但可能不知道这是否有帮助。 代理设置在文件 – 设置 – 外观和行为 – 系统设置 – HTTP代理。

@yabin ya说这是一个很酷的解决scheme,只是提醒你:如果你仍然遇到同样的问题,请转到设置 – 版本控制-GitHub,并Clone git repositories using ssh取消选中Clone git repositories using ssh

不是解决scheme/解决方法,但可能是“可能是什么问题”这个问题的答案:

Gitlab和“在ssh库中build立的jetbrains”不能很好地协同工作。 该库希望使用基于SHA1的密钥交换algorithm,其中gitlab(默认)只允许基于SHA2的密钥交换algorithm。

据报至less是TeamCity( https://youtrack.jetbrains.com/issue/TW-47704 )。

事实上,它也可能是IntelliJ中的拉/推问题的原因,也是我在PhpStorm中的推送问题是基于ASSUMPTION jetbrains为其所有软件使用相同的“内置库”。

我通过重新添加远程存储库来解决这个问题:VCS – > Git – > Remotes。

我有一个从一些在线课程分叉的问题。 我克隆我的叉子,并遇到权限错误。 我不明白为什么要坚持我是我的另一家公司的用户。 但正如前面的评论者提到我有Clone git repositories using ssh设置检查,我忘记添加一个SSH密钥到我的新帐户。 所以我做了,然后仍然不能推,因为我得到了这个错误。 我解决这个问题的方法是推动使用Github桌面客户端。

小贴士:

  1. 当你打开一个新的GitHub帐户时,请确保添加一个ssh密钥
  2. 为不同的帐户使用不同的SSH密钥
  3. 一般来说,我在IntelliJ上遇到一些GitHub问题,每个项目至less有一次或两次。 确保你有一个GitHub桌面的副本,并加载你的项目。 它可以帮助你解决Intellij可能遇到的许多问题,而不仅仅是这一点。 这实际上是一个非常好的GUI客户端和免费的!
  4. 这可能是有道理的做@yabinbuild议和使用Mac上的本地客户端

唯一帮助我的情况(切换SSH-executabe不工作)是停用git和git-flow插件,重新启动intellij并重新激活这些插件…

不要忘记联系您的系统pipe理员。

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

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

原因是我只有读取权限的存储库。 所以不要浪费你的宝贵时间,请把它作为第一件事。 谢谢。