使用IntelliJ IDEA的git:无法从远程存储库读取

stu*_*net 256 git intellij-idea

几个星期以来,我无法从远程存储库中拉出或推送.我认为升级到IntelliJ IDEA 14时会发生这种情况,但我也可以使用IDEA 13.1.5重现问题.

工具提示说"Fetch failed fatal:无法从远程存储库读取."

和版本控制选项卡中的异常读取

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.
Run Code Online (Sandbox Code Playgroud)

使用IntelliJ的内置终端执行git -c core.quotepath=false fetch origin --progress --prune,它可以正常工作.

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

git fetch从终端做另一个时,现在我被问到是否要永久添加服务器.之后,它又被写入known_hosts了,但IntelliJ仍然不允许我更新我的项目.

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

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

有没有人知道这里可能出现什么问题?

小智 715

Settings --> Version Control --> Git,然后,在SSH可执行文件下拉列表中,选择 Native

版本控制:Git:SSH可执行文件:用于当前项目

如果这没有帮助,请确保您的本机sshgit客户端版本足够新.

  • 请你能解释**为什么**这个有用吗? (35认同)
  • 对我无济于事 (22认同)
  • @NicholasDiPiazza这与Github删除加密标准https://github.com/blog/2507-weak-cryptographic-standards-removed有关.使用"内置"库(例如TeamCity)的其他软件也会受到此更改的影响.你的本机git客户端可能是2-date,这就是为什么这个步骤修复了它. (11认同)
  • 奇怪.我有3台独立的电脑,在工作了2年以上之后就开始对我这么做了.这解决了它.WTF (9认同)
  • @Jimbo只是我的假设,但这就是我的理解:内置在您的存储库中使用另一个"用户",之前"用户"被允许推送文件和更改."用户"已在更新中重置,不再能够.Native使用您在计算机上登录的帐户. (8认同)
  • 我知道有可能改变SSH实现,我甚至明确写道我正在使用内置的可执行文件(我没有写过:本机在Windows上对我不起作用)但是你的帖子没有回复我的问题是内置可执行文件的问题是什么. (5认同)
  • **更新** 请注意,自版本 2019.1 以来,“SSH 可执行文件选择器已从 Git 设置中删除”。了解更多信息[此处](https://blog.jetbrains.com/idea/2019/01/intellij-idea-2019-1-early-access-program-is-open/)。 (3认同)
  • 这个答案应该被接受.修复了3年以上工作后突然出现的问题. (2认同)

小智 68

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

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

  • 到目前为止,切换回内置功能对我有用. (5认同)

Szy*_*iak 50

Could not read from remote repository最近在使用我的存储库时开始收到错误.我的规格:

  • IntelliJ IDEA 2017.3.4(终极版)
  • 设置 - >版本控制 - > Git - > SSH可执行文件 - >内置
  • Fedora Linux

在此输入图像描述

当然,这些问题仅在尝试从IDE中推/拉/取等时发生 - 从命令行执行相同的命令就像魅力一样.

解决方案对我有用

我不想从Built-InSSH可执行文件切换到Native,主要是因为我的本机SSH客户端在我尝试与远程存储库同步时会要求我输入密码.

我通过从SSH远程URL切换到HTTPS URL解决了这个问题.根据此GitHub帮助页面 - 建议使用HTTPS URL而不是SSH URL.

将远程URL更改SSHHTTPS

在IntelliJ IDEA中,转到VCS - > Git - > Remotes ...,选择包含"origin"的行,然后单击"编辑"按钮.如果您在GitHub上托管您的存储库,请将您的SSH URL替换为:

git@github.com:USERNAME/REPOSITORY.git
Run Code Online (Sandbox Code Playgroud)

至:

https://github.com/USERNAME/REPOSITORY.git
Run Code Online (Sandbox Code Playgroud)

您还可以从GitHub存储库主页获取HTTPS URL - 单击"克隆或下载"按钮,然后单击"使用HTTPS"链接以显示存储库的HTTPS URL:

在此输入图像描述

更新2018-03-13

JetBrains刚刚发布了IntelliJ IDEA 2017.3.5,其中包括对GitHub的SSH访问修复 - https://blog.jetbrains.com/idea/2018/03/intellij-idea-2017-3-5-fix-for-ssh-access -to-github上/

  • 这是我在MacBook Pro上运行的解决方案,PHPStorm 2017.3.4)(2018年1月30日之前提到的1/31必要构建日期). (2认同)

stu*_*net 22

IntelliJ的内置SSH客户端似乎哈希known_hosts,但是我的主机名是明文.

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

它也不可能混合使用 - 保留一些未散列的条目以及IntelliJ的散列条目.因此,您必须配置其他SSH客户端以使用散列主机.


Moh*_*med 13

在pyCharm中,

file|
    v-->settings|
                v-->Version Control|
                                   v-->Git
Run Code Online (Sandbox Code Playgroud)

这里改变SSH executableBuilt-inNative

然后按applyclose


小智 12

  1. 转到设置 - > Git->在SSH可执行文件下拉列表中选择本机.(如果未选中)
  2. 从Github存储库复制HTTPS链接.
  3. 转到VCS-> Git-> Remotes ..
  4. 在URL字段中编辑原点和粘贴HTTPS链接.
  5. 按下Ctrl+Shift+k并将项目推送到存储库.有用.


小智 10

我通过重新添加远程存储库解决了这个问题:VCS - > Git - > Remotes.

  • 在我的情况下不是一个好的选择......现在我无法再次重新添加它,收到消息"_Invalid remote [...]远程URL测试失败:无法从远程存储库读取."Obs:我可以通过git cli连接到github. (4认同)

小智 5

@yabin ya所说的是一个很酷的解决方案,只是提醒你:如果你仍然遇到同样的问题,请转到Settings-Version Control-GitHub并取消选中Clone git repositories using ssh.


abs*_*har 5

您需要生成一个新的SSH密钥并将其添加到您的ssh-agent.为此你应该按照这个链接.

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


Ahm*_*our 5

对我来说,解决方案是:SettingsVersion Control? Git?Use Credential helper

在此处输入图片说明