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桌面客户端。
小贴士:
- 当你打开一个新的GitHub帐户时,请确保添加一个ssh密钥
- 为不同的帐户使用不同的SSH密钥
- 一般来说,我在IntelliJ上遇到一些GitHub问题,每个项目至less有一次或两次。 确保你有一个GitHub桌面的副本,并加载你的项目。 它可以帮助你解决Intellij可能遇到的许多问题,而不仅仅是这一点。 这实际上是一个非常好的GUI客户端和免费的!
- 这可能是有道理的做@yabinbuild议和使用Mac上的本地客户端
唯一帮助我的情况(切换SSH-executabe不工作)是停用git和git-flow插件,重新启动intellij并重新激活这些插件…
不要忘记联系您的系统pipe理员。
因为在我的情况下,我已经正确地configuration了所有的东西(SSH也添加了),但是我得到了同样的错误
资源库访问被拒绝。 致命的:无法从远程存储库读取。
原因是我只有读取权限的存储库。 所以不要浪费你的宝贵时间,请把它作为第一件事。 谢谢。