ChatGPT解决这个技术问题 Extra ChatGPT

带有 IntelliJ IDEA 的 git:无法从远程存储库中读取

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

工具提示显示“Fetch failed fatal: could not read from remote repository。”

并且版本控制选项卡中的异常显示为

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 可执行文件。

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

您是否手动将 SSH 密钥添加到您的 git 存储库?
@aurelius 是的,我们正在使用 GitLab,我已将其发布到我的个人资料中。
IntelliJ 对您的公钥/私钥对不满意。你是如何产生它的?
@yole 我尝试了 puttygenGit GUI,因为这也是我的第一个想法。你确定是关于我的密钥对吗?例外似乎与已知主机有关:code.google.com/p/connectbot/source/browse/src/com/trilead/ssh2/…
不确定是否反对 - known_hosts 中的散列/未散列条目似乎存在问题。我将进一步深入研究并回答这个问题。

M
Matthias Braun

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

https://i.stack.imgur.com/sdTcZ.png

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


我知道可以更改 SSH 实现,我什至明确写道,我正在使用内置的可执行文件(我没有写:本机在 Windows 上不适合我)但是你的帖子没有回答我的问题是内置可执行文件的问题可能是什么。
@Jimbo只是我的假设,但这就是我的理解:内置在您的存储库中使用另一个“用户”,以前允许“用户”推送文件和更改。该“用户”在更新中被重置并且不再能够。 Native 使用您在计算机上登录的帐户。
奇怪的。我有 3 台独立的计算机在工作 2 年多后都开始对我这样做。这修复了它。跆拳道
@NicholasDiPiazza 这与 Github 删除加密标准 github.com/blog/2507-weak-cryptographic-standards-removed 有关。其他使用“内置”库的软件(例如 TeamCity)也会受到此更改的影响。您的本地 git 客户端可能是最新的,这就是此步骤修复它的原因。
这个答案应该被接受。为我解决了在正常工作 3 年以上后突然出现的问题。
b
biniam

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

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


在 Android Studio 中也可以正常工作。这个问题让我很生气,谢谢@Farbod jan!
切换 SSH executable 对我有用。我也已经在 Native 上了。
对于所有考虑回到内置的人:考虑首先更新您的本机 SSH。本机可执行文件在整个操作系统中使用,并且在您的 IDE 内外表现一致。
S
Szymon Stepniak

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

IntelliJ IDEA 2017.3.4(终极版)

设置 -> 版本控制 -> Git -> SSH 可执行文件 -> 内置

Fedora Linux

https://i.stack.imgur.com/oXlnQ.png

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

对我有用的解决方案

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

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

将远程 URL 从 SSH 更改为 HTTPS

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

git@github.com:USERNAME/REPOSITORY.git

至:

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

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

https://i.stack.imgur.com/VMZVz.png

更新 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 必要构建日期之前)。
此解决方案有效,通常,问题是许多用户尝试使用 SSH 密钥来定义远程,但它会给您一个错误。大多数时候,从 SSH 切换到 HTTPS 是解决方案。
使用基于 https 的链接解决我在 PhpStorme 版本 2018.1.5 上的问题
该解决方案适用于 MacBook Pro 和 Intellij IDEA。
还可以与 GitLab 一起将 URL 更改为 https 链接。
d
danronmoon

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

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

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


S
Sarvesh Athawale

在 SSH 可执行文件下拉菜单中转到 Settings->Git->Select Native。 (如果未选中)从您的 Github 存储库复制 HTTPS 链接。转到 VCS->Git->Remotes.. 编辑源并在 URL 字段中粘贴 HTTPS 链接。按 Ctrl+Shift+k 并将项目推送到存储库。有用。


SSH 和用 HTTPS 协议替换 URL 之间的联系在哪里?
我只是想知道,到底哪里有人在这里提到了 github?
这对我有用,它要求我提供我的 bitbucket 凭据,然后就可以了。
A
Ahmed Ashour

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

https://i.stack.imgur.com/Q65Qc.png


取消勾选对吗??或检查?
我记得:应该“检查”。
M
Mohideen bin Mohammed

在 pyCharm 中,

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

这里将 SSH executableBuilt-in 更改为 Native

然后按 applyclose


N
Nikita Zamalyutdinov

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


在我的情况下不是一个好的选择...现在我无法重新添加它,收到消息“无效远程 [...] 远程 URL 测试失败:无法从远程存储库读取。” Obs:我可以连接通过 git cli 到 github。
与@Ricardo 相同的问题
@uri 没有一个解决方案对我有用。我安装了 2018 EAP,它修复了 2017 年 12 月报告的 issue终于奏效了! 另见帖子 Update-ssh-key-to-use-new-passphrase
我在问题中添加了评论,但它们被隐藏了。所以我也添加了一个 answer
由于未知的原因,它适用于 PHPStorm 2017.4。谢谢!
X
XYz Amos

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


a
abshar

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

创建公钥并将其添加到您的 github 帐户后,您应该在 Intellij Idea 中使用 Setting-> Version Control -> Git -> SSH executable 下的 Built-in (not Native) 选项。


对我来说,切换到 Native 解决了问题,在 Mac 上
我在这个问题上苦苦挣扎了大约一个星期左右(幸运的是,我可以同时使用 git 命令行)..我最终解决它的方法是重新生成我的 SSH 密钥,但我还必须重新启动计算机并使用命令行ssh-添加。
K
Koen de Roo

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


那很有意思!所以你有相同的堆栈跟踪?
我们有相同的堆栈跟踪(我已经稍微改变了答案)
J
Jenya Kirmiza

这帮助我解决了当前问题

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

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

source


S
Steve Borland

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


V
Volodymyr

我通过在命令中将我的 SSH 私钥添加到 ssh-agent 解决了这个问题:

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

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


A
ArjanW

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

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

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

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


A
Aron T

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

要点:

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


P
Patrick Dorn

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


R
Rahal Kanishka

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

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

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

原因是我只有对该存储库的读取权限。因此,在不浪费您宝贵时间的情况下,请先检查一下。谢谢你。


当没有足够的权限时,您在日志中得到了 java.io.IOException: Padding in RSA public key!?这很有趣,并且可能表明 IntelliJ 的 SSH 处理中存在错误。
W
Wilmer E. Henao

如果一切都失败了,只需转到您的终端并从您的文件夹中输入:

git push origin master

这就是众神原本想要的样子。


R
Ricardo

我最近(2018 年 2 月)遇到了 WebStorm 的这个问题,并且(当时)以前的解决方案都没有对我有用。在花了几个小时进行故障排除和研究后,我安装了 2018 EAP 版本,现在它可以工作了!

一个新的 issue2017 年 12 月 报道了 IntelliJ Idea >在版本 181.2445(或 2018 年 1 月 31 日之后的任何最新版本)中修复的 VCS/Git 子系统。

另请参阅帖子 Update-ssh-key-to-use-new-passphrase


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

这个问题在我的电脑上解决了。 settings-->Version Control-->Git ,然后,在 SSH executable 下拉菜单中,选择 built-in 选项。

并安装 git 旧版本,例如 2.14.2。它的效果很好!


b
binithb

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


c
connexo

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

https://i.stack.imgur.com/HZKTP.png


i
imans77

我通过确保我有正确的 git SSH url 没有任何尾随空格来解决这个问题:

git@github.com:USERNAME/REPOSITORY.git

G
Gaurav

添加这个答案,因为没有一个答案对我有用。

我有证书问题 - 所以下面的命令就可以了。

git config --global http.sslVerify false

取自 https://confluence.atlassian.com/fishkb/unable-to-clone-git-repository-due-to-self-signed-certificate-376838977.html


u
user3231514

我尝试了上述所有解决方案(本机、更改 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 存储库,它可以正常工作,现有项目也可以正常工作。有趣的事实是,当我在 Idea Settings 中切换到 NATIVE 时,存储库无法正常工作。


N
NullPointer

我有同样的问题。正在使用 bitbucket 并且在拉取/更新 Intellij 上的存储库时遇到了麻烦。尝试更改为原生并返回内置,但它不起作用。然后意识到我已经使用密码生成了 ssh 密钥。

我在没有密码的情况下重新生成了密钥,然后将其添加到了 bitbucket。有效 !


A
Alireza Alallah

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

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

S
Smart Coder

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

https://i.stack.imgur.com/Z8S8o.png


G
Gk Mohammad Emon

我在 macOS (Version Chipmunk|2021.2.1) 上使用最新的 Android Studio 版本时遇到了同样的问题。所以我没有将 Intellij (Android studio) 用于克隆项目。我通过以下命令执行此操作 -

git clone https://YOUR_GIT_DEVELOPER_KEY_FROM_CONSOLE@YOUR_GIT_URL 

假设这是您的 repo,那么它将是这样的

git clone https://3didfe32434jndYnjs@github.com/Gkemon/Android-XML-to-PDF-Generator.git