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


260

几个星期以来,我无法从远程存储库中拉出或推入。我以为升级到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,它可以正常工作。

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

git fetch现在,从终端执行其他操作时,系统会询问我是否要永久添加服务器。在那之后,它known_hosts再次被写入,但是IntelliJ仍然不允许我更新我的项目。

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

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

有人知道这里可能是什么问题吗?


您是否手动将SSH密钥添加到git存储库?
aurelius 2014年

@aurelius是的,我们正在使用GitLab,我已将其发布到我的个人资料中。
stuXnet 2014年

IntelliJ对您的公用/专用密钥对不满意。您是如何产生的?
yole 2014年

@yole我同时尝试了puttygenGit GUI,因为这也是我的第一个想法。您确定与我的钥匙对有关吗?唯一的例外似乎是对已知主机:code.google.com/p/connectbot/source/browse/src/com/trilead/ssh2/...
震网

不确定下降票-已知主机中的散列/未散列条目似乎存在问题。我将对其进行深入研究并回答问题。
stuXnet 2015年

Answers:


721

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

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

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


5
我知道可以更改SSH的实现,我什至明确地写到我正在使用内置可执行文件(我还没有写过:native在Windows上对我不起作用),但是您发布的内容没有答案我的问题是内置可执行文件可能是什么问题。
stuXnet 2015年

22
无法帮助我
hellboy

8
@Jimbo只是我的假设,但这是我的理解方式:内置使用存储库中的另一个“用户”,之前允许“用户”推送文件和更改。该“用户”已在更新中重置,并且不再能够。本机使用您在计算机上登录的帐户。
AlexG '16

10
奇怪。我工作了2年以上,有3台单独的计算机都开始对我执行此操作。这样就解决了。WTF
Nicholas DiPiazza

11
@NicholasDiPiazza这与Github删除加密标准github.com/blog/2507-weak-cryptographic-standards-removed有关。使用此“内置”库的其他软件(例如TeamCity)也会受到此更改的影响。您的本地git客户端可能是最新的2,这就是为什么此步骤可以修复它的原因。
philsch '18

68

转到首选项>版本控制> Git。确保SSH可执行文件设置为“本机”。(如果已经这样做,请将其切换为“内置”,应用它,然后再次切换回“本机”。)

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


1
在Android Studio中也可以正常工作。这个问题使我发疯,谢谢@Farbod jan!
Javad Sadeqzadeh,

1
切换SSH executable对我有用。我也已经在Native
nic

1
对于考虑考虑内置功能的所有人:首先考虑更新本地SSH。本机可执行文件在整个操作系统中都将使用,并且在IDE的内部和外部始终保持一致。
milosmns

52

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->遥控器...,选择包含“ origin”的行,然后单击“ edit”按钮。如果您将存储库托管在GitHub上,请从以下位置替换您的SSH URL:

git@github.com:USERNAME/REPOSITORY.git

至:

https://github.com/USERNAME/REPOSITORY.git

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

在此处输入图片说明

更新2018-03-13

JetBrains公司刚刚发布的IntelliJ IDEA 2017年3月5日,包括用于SSH访问GitHub的修复- https://blog.jetbrains.com/idea/2018/03/intellij-idea-2017-3-5-fix-for-ssh-access -to-github /


2
这是在MacBook Pro(PHPStorm 2017.3.4)上为我工作的解决方案(2018年1月30日,在指定的1/31必要构建日期之前)。
爱德华·巴纳德

1
通常,此解决方案有效,问题是许多用户尝试使用SSH密钥定义远程,但它给您带来错误。大多数情况下,从SSH切换到HTTPS是解决方案。
Kourosh

1
使用基于https的链接在PhpStorme版本2018.1.5
dmitri '18

1
该解决方案在MacBook Pro(Intellij IDEA)上为我工作。
shaojun lyu

1
还可以与GitLab一起使用,以将URL更改为https链接。
詹姆斯大师

23

IntelliJ的内置SSH客户端似乎对其哈希进行了哈希处理known_hosts,但是我拥有的主机名使用明文形式。

当我删除该文件并让IntelliJ创建一个新文件时,仅使用我的(已散列的)GitLab服务器,而没有其他操作,它就可以工作。

也不可能将其混合-将一些未散列的条目与哈希条目一起保留给IntelliJ。因此,您必须将其他SSH客户端配置为使用哈希主机


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

1
SSH和用HTTPS协议替换URL之间的连接在哪里?
sweisgerber.dev

我只想知道,有人在这里提到github吗?
Emad Ha

这对我有用,它要求我提供我的Bitbucket凭证,然后就可以了。
马龙


11

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


4
对于我的情况,这不是一个好选择...现在,我无法再次对其进行重新添加,得到的消息是“ 无效的远程[...]远程URL测试失败:无法从远程存储库读取。 ” Obs:我可以连接通过git cli转到github。
里卡多

1
与@Ricardo相同的问题
Uri Goren,

@uri没有一个解决方案对我有用。我安装了2018年EAP,已修复了2017年12月报告的问题终于成功了!另请参阅 更新SSH密钥以使用新密码短语
Ricardo

我向问题添加了评论,但它们被隐藏了。所以我也添加了一个答案
里卡多

出于未知的原因,它适用于PHPStorm 2017.4。谢谢!
Maksim B.

5

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


5

您需要生成一个新的SSH密钥并将其添加到您的ssh-agent中。对于那您应该点击此链接

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


1
对于我来说,要Native解决此问题,在Mac上
Jeroen Vermeulen-MageHost

我在这个问题上苦苦挣扎了大约一个星期(幸运的是,我可以同时使用git命令行)。我最终的解决方法是重新生成SSH密钥,但是我也不得不重新启动计算机并使用命令行ssh-add。
Crenguta S

3

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


那很有意思!所以你有相同的堆栈跟踪?
stuXnet

我们使用了相同的stacktrace(我改变了答案的方式)
Koen de Roo 2015年

3

这帮助我解决了当前问题

如果您使用的是macOS Sierra 10.12.2或更高版本,则需要修改〜/ .ssh / config文件,以将密钥自动加载到ssh-agent中并将密码短语存储在密钥链中。

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

资源



2

我已通过将SSH私钥添加到命令中的ssh-agent来解决此问题:

$ ssh-add -K ~/.ssh/id_rsa

并设置Settings --> Version Control --> Git,然后在SSH可执行文件下拉菜单中选择Native


1

不是解决方案/解决方法,而是对问题“可能是什么”的答案:

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

至少TeamCity(https://youtrack.jetbrains.com/issue/TW-47704)对此进行了报道。

这也可能是导致您在IntelliJ中出现拉/推问题的原因,而我在PhpStorm中的推入问题也基于ASSUMPTION Jetbrains,他们的所有软件都使用相同的“内置库”。


0

我在一些在线课程中遇到了这个问题。我克隆了fork并遇到权限错误。我不明白为什么要坚持我是其他公司的用户。但是正如前一个评论者所提到的,Clone git repositories using ssh检查设置,并且忘记了在新帐户中添加ssh密钥。所以我这样做了,但是仍然无法推送,因为我遇到了这个错误。我解决问题的方法是使用Github Desktop客户端进行推送。

外卖:

  1. 当您打开一个新的GitHub帐户时,请确保为其添加一个ssh密钥
  2. 对不同的帐户使用不同的ssh密钥
  3. 总的来说,对于每个项目,我在IntelliJ上至少遇到一两次GitHub问题。确保您拥有GitHub桌面的副本,并将项目加载到其中。它可以并且将帮助您解决Intellij可能遇到的许多问题-而不仅仅是这个问题。它实际上是一个非常好的GUI客户端,并且是免费的!
  4. 进行@yabin建议并在Mac上使用本机客户端可能很有意义

0

在我的情况下唯一有用的(切换SSH-executabe无效)是停用git和git-flow插件,重新启动intellij并再次激活这些插件...


0

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

因为就我而言,我已正确配置了所有内容(还添加了SSH),但是却遇到了相同的错误

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

原因是我仅对该存储库具有读取权限。因此,请不要浪费您宝贵的时间,首先要检查一下。谢谢。


你有java.io.IOException: Padding in RSA public key!在日志中时,有没有足够的权限?这很有趣,并且可能表明IntelliJ的SSH处理存在错误。
stuXnet

0

如果所有其他方法都失败,请转到终端并从文件夹中键入:

git push origin master

这就是众神最初希望的样子。


0

我最近(2018年2月)遇到了WebStorm的问题,以前的解决方案都对我不起作用。经过数小时的故障排除和研究后, 我安装了2018 EAP版本,现在可以使用了!


201712月报告了新一在IntelliJ Idea> VCS / Git子系统上该问题已在内部版本181.2445(或2018年1月31日之后的任何最新版本)中修复。

另请参阅 更新SSH密钥以使用新密码短语


感谢您的链接。对于其他TL; DR,对我来说,关键的评论是Nate:“对我有用的解决方案:在“设置”>“外观和行为”>“系统设置”>“密码...”下... ...切换到“不保存,重启后忘记密码” ,进行拉动,然后再将其切换回去。
马修·韦伯

0

问题在我的电脑中解决了。
设置->版本控制-> Git,然后在SSH可执行文件下拉列表中,选择内置选项。

并安装git较旧的版本,例如2.14.2
它的作品很好!


0

如果您尝试连接到github或bitbucket之类的云服务,请检查Idea代理设置。这可以通过查找要安装的插件或通过检查help菜单中的软件更新来完成。如果Internet /代理设置不正确,请添加有效条目或将其设置为auto


0

这在MacOS High Sierra(10.13.5)/ IntelliJ IDEA 2018.4上为我修复了它(我使用SSH,而不是HTTPS,并且使用本机git,而不是内置git):

文件->使缓存无效并重新启动


0

我只是通过确保我拥有正确的git SSH url而没有任何尾随空格来解决此问题:

git@github.com:USERNAME/REPOSITORY.git


0

我尝试了上述所有解决方案(本机,更改VCS存储库的url,更新Git,更新IDEA,使缓存无效),但没有任何帮助。最终,我找到了适合我的解决方案。

解决方案:我关闭了Idea并将文件内容替换为~\.IntelliJIdea20xx.x\config\options\git.xml

<application>
  <component name="Git.Application.Settings">
    <option name="SSH_EXECUTABLE" value="IDEA_SSH" />
  </component>
</application>

然后,我启动了IDEA,尝试签出SSH GIT存储库,它可以正常运行,并且现有项目也可以正常运行。有趣的事实是,当我在“想法设置”中切换到“本地”时,存储库无法正常工作。


0

我有同样的问题。正在使用bitbucket,在Intellij上拉/更新存储库时遇到问题。尝试将其更改为本机,然后又改回内置,但无法正常工作。然后意识到我已经用密码生成了ssh密钥。

我重新生成了没有密码短语的密钥,然后将其添加到了位桶中。有效 !


0

我尝试了Nativeoption但对我不起作用,最后以旧方式重新生成ssh密钥并-mssh-keygen命令中添加了option 。IDEA也可以与build-in选项一起使用。

ssh-keygen -m PEM -t rsa -b 4096 -C "email@..."

0

添加远程URL时,请从此更改

https://username@bitbucket.org/usernameowner/project-name.git

对此

https://bitbucket.org/usernameowner/project-name.git



-1

HTTPS如果SSH不起作用,请在IntelliJ设置中选择“本机”后,确保已将git存储库的链接更改为该选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.