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

时间:2014-12-19 13:18:50

标签: git intellij-idea

几周以来,我无法从远程存储库中拔出或推送。我认为升级到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可执行文件。

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

31 个答案:

答案 0 :(得分:707)

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

Version Control: Git: SSH executable: For current project

如果这样做无效,请确保您的原始sshgit个客户端版本最新。

答案 1 :(得分:68)

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

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

答案 2 :(得分:49)

我最近在使用存储库时遇到了 Could not read from remote repository 错误。我的规格:

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

enter image description here

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

对我有用的解决方案

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

我通过从SSH远程URL切换到HTTPS URL解决了这个问题。根据这个GitHub帮助页面 - it is recommended to use HTTPS URL instead of SSH one

将远程网址从SSH更改为HTTPS

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

git@github.com:USERNAME/REPOSITORY.git

为:

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

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

enter image description here

更新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/

答案 3 :(得分:21)

IntelliJ的内置SSH客户端似乎是hash its known_hosts,但我的主机名是明文。

当我删除文件并让IntelliJ创建一个新文件时,只使用我的(散列)GitLab服务器,而不是其它任何东西,它可以工作。

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

答案 4 :(得分:13)

在pyCharm中,

file|
    v-->settings|
                v-->Version Control|
                                   v-->Git

此处SSH executableBuilt-in更改为Native

然后按applyclose

答案 5 :(得分:11)

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

答案 6 :(得分:9)

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

答案 7 :(得分:5)

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

答案 8 :(得分:5)

您需要生成新的SSH密钥并将其添加到您的ssh-agent。为此,您应该遵循此link

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

答案 9 :(得分:3)

我们最近从IntelliJ 12更新到IntelliJ 14 Ultimate,我们也遇到了这个问题。我们的解决方案是在设置中禁用代理。我们也停止记住密码一次,但可能不确定这是否有帮助。 代理设置在File-Settings-Apearance&行为 - 系统设置 - HTTP代理。

答案 10 :(得分:2)

对我来说,解决方案是:Settings˃Version Control˃Git˃Use Credential helper

enter image description here

答案 11 :(得分:2)

这有助于我解决当前问题

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

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

source

答案 12 :(得分:2)

我通过删除PuTTY中ssh密钥的密码解决了这个问题。

答案 13 :(得分:1)

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

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

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

答案 14 :(得分:1)

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

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

至少报告了TeamCity(https://youtrack.jetbrains.com/issue/TW-47704)。

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

答案 15 :(得分:0)

我在某些在线课程中遇到了这个问题。我克隆了我的fork并遇到了权限错误。我无法理解为什么它坚持我是我的另一家公司的用户。但正如之前的评论者提到的那样,我检查了Clone git repositories using ssh设置,而我忘了在我的新帐户中添加一个ssh密钥。所以我做了然后仍然无法推动因为我得到了这个错误。我解决它的方法是推动使用Github Desktop客户端。

外卖:

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

答案 16 :(得分:0)

如果其他所有方法都失败了,只需转到您的终端并从您的文件夹中输入:

git push origin master

这就是神最初想要的方式。

答案 17 :(得分:0)

我更改了git路径,并且有效。

enter image description here

答案 18 :(得分:0)

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

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

对此

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

答案 19 :(得分:0)

我尝试了manager选项,但对我不起作用,最后以旧方式重新生成ssh密钥,并在title命令中添加了Native选项。 IDEA 也可以使用-m选项。

ssh-keygen

答案 20 :(得分:0)

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

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

答案 21 :(得分: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存储库,它可以正常运行,并且现有项目也可以正常运行。有趣的事实是,当我在“想法设置”中切换到“本地”时,存储库无法正常工作。

答案 22 :(得分:0)

没有任何帮助。然后我发现计算机上的项目名称与git存储库上的名称不同。

所以我解决了这个问题。

答案 23 :(得分:0)

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

git@github.com:USERNAME/REPOSITORY.git

答案 24 :(得分:0)

这解决了我(我使用SSH,而不是HTTPS,以及本机git,而不是内置的)在MacOS High Sierra(10.13.5)/ IntelliJ IDEA 2018.4:

File -> Invalidate Caches and Restart

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

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

答案 27 :(得分:0)

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

答案 28 :(得分:0)

请勿忘记与系统管理员联系。

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

  

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

原因是我只对该存储库具有读访问权限。因此,在浪费宝贵时间的同时,请先检查一下。 谢谢。

答案 29 :(得分:0)

我最近遇到了WebStorm的这个问题( February / 2018 ),之前的解决方案都没有为我工作。在花了几个小时进行故障排除和研究后,我安装了2018 EAP版,现在可以了!

在IntelliJ Idea&gt;上 2017年12月上报告的新issue VCS / Git子系统已在build 181.2445(或2018年1月31日之后的任何最新版本)中修复。

另见帖子Update-ssh-key-to-use-new-passphrase

答案 30 :(得分:-1)

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