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, он работает так, как и должен.

Согласно трассировке стека, похоже, что проблема с моим KnownHosts, поэтому я удалил наш git-сервер ~/.ssh/known_hosts, надеясь, что IntelliJ вставит его снова. Но проблема все еще появляется при обновлении через пользовательский интерфейс, и в ней нет новой записи known_hosts; подумав о некотором кешировании файла, я перезапустил IntelliJ, но безуспешно.

При выполнении другого git fetchиз терминала, теперь меня спрашивают, хочу ли я добавить сервер навсегда. После этого он был known_hostsснова записан , но IntelliJ по-прежнему не позволяет мне обновлять мой проект.

Я ничего не нашел об этом поведении в Интернете, поэтому я думаю, что это не известная ошибка в новой версии IntelliJ. Тем не менее, я обновился до 14.0.2, но проблема все еще существует.

IntelliJ настроен на использование встроенного исполняемого файла SSH.

Кто-нибудь знает, в чем может быть проблема?


Вы вручную добавили ключ SSH в свой репозиторий git?
Аврелий

@aurelius да, мы используем GitLab, и я разместил его там в своем профиле.
stuXnet

IntelliJ недоволен вашей парой открытых / закрытых ключей. Как вы это создали?
Йоль

@ yole Я попробовал и то, puttygenи другое Git GUI, так как это была моя первая мысль. Вы уверены, что это о моей ключевой паре? Кажется, исключение касается известных хостов: code.google.com/p/connectbot/source/browse/src/com/trilead/ssh2/…
stuXnet

Не уверен насчет понижения - похоже, проблема с хэшированными / не хэшированными записями в known_hosts. Я собираюсь углубиться в это и ответить на вопрос.
stuXnet

Ответы:


722

Settings --> Version Control --> Gitи затем в раскрывающемся списке исполняемых файлов SSH выберите Native

Контроль версий: Git: исполняемый файл SSH: для текущего проекта

Если это не помогает, убедитесь , что ваши родные sshи gitклиенты имеют достаточно последнюю версию.


5
Я знаю, что можно изменить реализацию SSH, я даже явно написал, что я использую встроенный исполняемый файл (что я не написал: native не работает для меня в Windows), но вы не отвечаете на сообщение мой вопрос, что проблема со встроенным исполняемым файлом может быть.
stuXnet

22
Не могу помочь мне
Хеллбой

8
@Jimbo Просто мое предположение, но вот как я понимаю: встроенный использует другого «пользователя» в вашем хранилище, ранее «пользователю» было разрешено загружать файлы и изменения. Этот «Пользователь» был сброшен в Обновлении и больше не может. Native использует учетную запись, на которой вы вошли на свой компьютер.
AlexG

10
Странный. у меня было 3 отдельных компьютера, все начали делать это со мной после работы в течение 2+ лет. это исправило это. WTF
Николас ДиПьяцца

11
@NicholasDiPiazza Это связано с тем, что Github удаляет криптографические стандарты github.com/blog/2507-weak-cryptographic-standards-removed . Также другие изменения, которые используют «встроенные» библиотеки (например, TeamCity), затронуты этим изменением. Ваш нативный git-клиент, вероятно, устарел, поэтому этот шаг исправляет это.
philsch

68

Перейдите в «Настройки»> «Контроль версий»> «Git». Убедитесь, что для исполняемого файла SSH установлено значение «Native». (Если это уже так, переключите его на «Встроенный», примените его, а затем снова переключите на «Собственный».).

Если это не решит вашу проблему, я бы предложил загрузить Git-клиент, такой как GitHub client (бесплатное приложение для ПК), и попытаться синхронизировать ваш проект через приложение. Затем вернитесь в IntelliJ и проверьте, работает ли он.


1
Прекрасно работает и в Android Studio. Эта проблема сводила меня с ума, спасибо @Farbod jan!
Джавад Садекзаде

1
Переключение SSH executableработало на меня. Я уже был включен Native.
NIC

1
Для всех, кто хочет вернуться к встроенному: сначала подумайте об обновлении вашего SSH. Собственный исполняемый файл используется во всей ОС и будет вести себя согласованно внутри и за пределами вашей IDE.
Милосмны

52

Я начал получать Could not read from remote repository ошибки недавно при работе с моимрепозиторий. Мои характеристики:

  • IntelliJ IDEA 2017.3.4 (Ultimate Edition)
  • Настройки -> Контроль версий -> Git -> SSH исполняемый файл -> Встроенный
  • Fedora Linux

введите описание изображения здесь

Конечно, эти проблемы возникали только при попытке вытолкнуть / вытащить / извлечь и т. Д. Из IDE - выполнение тех же команд из командной строки работало как чудо.

Решение, которое сработало для меня

Я не хотел переключаться с Built-Inисполняемого файла SSH Native, главным образом потому, что мой собственный SSH-клиент запрашивает у меня пароль каждый раз, когда я пытаюсь синхронизироваться с удаленным репозиторием.

Я решил эту проблему, переключившись с удаленного URL-адреса SSH на HTTPS-URL. Согласно этой странице справки GitHub - рекомендуется использовать HTTPS URL вместо SSH .

Изменение удаленного URL с SSHнаHTTPS

В IntelliJ IDEA перейдите в VCS -> Git -> Remotes ... , выберите строку, содержащую «origin», и нажмите кнопку редактирования. Если вы размещаете свой репозиторий на GitHub, замените ваш SSH URL с:

git@github.com:USERNAME/REPOSITORY.git

чтобы:

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

Вы также можете получить URL-адрес HTTPS с домашней страницы своего репозитория GitHub - нажмите кнопку «Клонировать или загрузить» и нажмите ссылку «Использовать HTTPS», чтобы отобразить URL-адрес вашего репозитория HTTPS:

введите описание изображения здесь

ОБНОВЛЕНИЕ 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 -в-GitHub /


2
Это решение, которое работало для меня на MacBook Pro, PHPStorm 2017.3.4) (30 января 2018 года, до необходимой даты сборки 1/31).
Эдвард Барнард

1
Это решение работало, обычно проблема в том, что многие пользователи пытаются использовать ключ SSH для определения удаленного, но выдает ошибку. Переключение с SSH на HTTPS является решением в большинстве случаев.
Курош

1
используя ссылку, основанную на https, моя проблема на версии PhpStorme 2018.1.5
dmitri

1
Это решение работало для меня на MacBook Pro, Intellij IDEA.
Шаоюнь Лю

1
Также работает с GitLab, чтобы изменить URL на ссылку https.
Мастер Джеймс

23

Кажется, что встроенный SSH-клиент IntelliJ хэширует егоknown_hosts , но тот, который у меня, имел имена хостов в виде открытого текста.

Когда я удалил файл и позволил IntelliJ создать новый, только с моим (хэшированным) сервером GitLab и ничем иным, это сработало.

Это также невозможно смешать - сохраните некоторые не хэшированные записи вместе с хэшированными записями для IntelliJ. Таким образом, вы должны настроить другие SSH-клиенты для использования хэшированных хостов .


14
  1. Перейдите в Настройки-> Git-> Выбрать Native в выпадающем списке SSH. (Если он не выбран)
  2. Скопируйте ссылку HTTPS из вашего репозитория Github.
  3. Зайдите в VCS-> Git-> Remotes ..
  4. Отредактируйте источник и вставьте HTTPS-ссылку в поле URL.
  5. Нажмите Ctrl+Shift+kи отправьте проект в хранилище. Оно работает.

1
Где связь между SSH и заменой URL-адресов протоколом HTTPS?
sweisgerber.dev

я просто хочу знать, где кто-нибудь упоминал здесь Github?
Эмад Ха

Это сработало для меня, он попросил мои учетные данные bitbucket, тогда его хорошо идти.
Марлон


11

Я решил эту проблему, повторно добавив удаленный репозиторий: VCS -> Git -> Remotes.


4
Не очень хороший вариант в моем случае ... Теперь я не могу снова добавить его, получая сообщение « Недопустимый удаленный [...] удаленный тест URL-адреса: не удалось прочитать из удаленного репозитория». Obs: я могу подключиться GitHub через GIT Cli.
Рикардо

1
Та же проблема, что и у @Ricardo
Ури Горен

@uri ни одно из решений не помогло мне. Я установил EAP 2018, который исправил проблему, о которой сообщалось в декабре 2017 года. Наконец-то это сработало! см. также сообщение Update-ssh-key-to-use-new-passphrase
Ricardo

Я добавил комментарии к вопросу, но они стали скрытыми. Поэтому я тоже добавил ответ .
Рикардо

По неизвестной мне причине это работает для PHPStorm 2017.4. Спасибо!
Максим Б.

5

@yabin ya говорит, что это классное решение, просто напомню, что: если у вас все еще возникает та же проблема, перейдите в Settings-Version Control-GitHub и снимите флажок Clone git repositories using ssh.


5

Вам нужно сгенерировать новый ключ SSH и добавить его в свой ssh-agent. Для этого вам следует перейти по этой ссылке .

После того, как вы создадите открытый ключ и добавите его в свою учетную запись github, вы должны использовать опцию Встроенный (не собственный) в Настройках-> Управление версиями -> Git -> SSH, исполняемый в вашей Intellij Idea.


1
Для меня переход на Nativeрешение проблемы, на Mac
Jeroen Vermeulen - MageHost

Я боролся с этой проблемой в течение недели или около того (к счастью, я мог использовать командную строку git за это время). Как я окончательно решил, что это регенерирует мои ключи SSH, но мне также пришлось перезагрузить компьютер и использовать командную строку SSH-добавить.
Crenguta S

3

Недавно мы обновились с IntelliJ 12 до IntelliJ 14 Ultimate, и мы тоже столкнулись с этой проблемой. Нашим решением было отключить прокси в настройках. Мы также перестали запоминать пароли один раз, но, возможно, не уверены, поможет ли это. Настройки прокси-сервера находятся в меню «Настройки файла» - «Внешний вид и поведение» - «Настройки системы» - «Прокси HTTP».


Это интересно! Так у вас была та же самая трассировка стека?
stuXnet

У нас была одна и та же трассировка стека (я немного изменил ответ)
Коэн де Роо

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 используют одну и ту же «встроенную библиотеку» для всего своего программного обеспечения.


0

У меня была эта проблема с вилкой из какого-то онлайн-курса. Я клонировал свою вилку и столкнулся с ошибкой прав доступа. Я не мог понять, почему он настаивал, что я был моим пользователем из другой компании. Но, как упоминал предыдущий комментатор, я Clone git repositories using sshпроверил настройку, и я забыл добавить ключ ssh в мою новую учетную запись. Так что я сделал, а затем все еще не мог нажать, потому что я получил эту ошибку. Я решил, как это сделать, используя клиент Github Desktop.

Takeaways:

  1. Когда вы открываете новую учетную запись GitHub, обязательно добавьте в нее ключ ssh
  2. Используйте разные ключи SSH для разных учетных записей
  3. В общем, я сталкиваюсь с проблемой GitHub на IntelliJ, по крайней мере, один или два раза для каждого проекта. Убедитесь, что у вас есть копия рабочего стола GitHub и загрузите в нее свои проекты. Это может и поможет вам с множеством проблем, с которыми вы можете столкнуться в Intellij - не только в этом. На самом деле это действительно хороший графический клиент и бесплатный!
  4. Вероятно, имеет смысл делать то, что предлагает @yabin, и использовать собственный клиент на Mac.

0

Единственное, что помогло в моем случае (не работал переключатель SSH-executetabe), было деактивировать плагин git и git-flow, перезапустить intellij и снова активировать эти плагины ...


0

Не забудьте связаться с вашим системным администратором.

Потому что в моем случае все было настроено правильно (также добавлен SSH), но я получил ту же ошибку

доступ к хранилищу запрещен. Неустранимый: Не удалось прочитать из удаленного хранилища.

причина была в том, что у меня был доступ только для чтения к этому хранилищу. Поэтому, не теряя драгоценного времени, пожалуйста, проверьте это как первое. Спасибо.


Вы попали java.io.IOException: Padding in RSA public key!в журнал, когда нет достаточных разрешений? Это интересно и может указывать на ошибку в обработке SSH IntelliJ.
stuXnet

0

Если ничего не помогает, просто перейдите в свой терминал и введите из своей папки:

git push origin master

Так изначально хотели Боги.


0

У меня была эта проблема с WebStorm недавно ( февраль / 2018 ), и ни одно из (тогда) предыдущих решений не работало для меня. Потратив несколько часов на поиск и устранение неисправностей, я установил версию EAP 2018 года, и теперь она работает!


В декабре / 2017 сообщалось о новой проблеме подсистемы IntelliJ Idea> VCS / Git, которая была исправлена ​​в сборке 181.2445 (или в любой последней сборке после 31 / января / 2018).

Смотрите также сообщение Update-ssh-key-to-use-new-passphrase


Спасибо за ссылку. Для других TL; DR ключевым комментарием для меня был Нейт: «Решение, которое сработало для меня: в меню« Настройки »>« Внешний вид и поведение »>« Системные настройки »>« Пароли ... »... переключиться на« Не сохранять », забыть пароли после перезагрузки , Потяните, затем переключите его обратно.
Мэтью Вебер,

0

Проблема решена в моем компьютере.
Настройки -> Управление версиями -> Git , а затем, в раскрывающемся списке исполняемого файла SSH, выберите встроенную опцию.

и установить Git более старую версию что-то вроде 2.14.2 .
Работает хорошо!


0

Проверьте настройки прокси-сервера Idea, если вы пытаетесь подключиться к облачным сервисам, таким как github или bitbucket. Это может быть сделано путем поиска плагинов для установки или проверки обновлений программного обеспечения в helpменю. Если настройки Интернета / прокси-сервера неверны, добавьте допустимые записи или задайте для них значениеauto


0

Это исправило это для меня (я использую SSH, а не HTTPS и родной git, а не встроенный) в MacOS High Sierra (10.13.5) / IntelliJ IDEA 2018.4:

File -> Invalidate Cache and Restart


0

Я решил проблему, просто убедившись, что у меня был правильный URL-адрес git SSH без пробелов:

git@github.com:USERNAME/REPOSITORY.git


0

Я перепробовал все решения выше (нативный, изменение URL-адреса хранилища VCS, обновление Git, обновление 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-репозиторий, и он работает, и существующие проекты также работают. Интересным фактом является то, что когда я переключаюсь на NATIVE в настройках Idea, репозиторий не работает.


0

У меня такая же проблема. Использовал bitbucket и имел проблемы с извлечением / обновлением репозитория на Intellij. Пробовал менять на родной и обратно на встроенный, но не получалось. Затем понял, что я сгенерировал ключ ssh с парольной фразой.

Я восстановил ключ без ключевой фразы, а затем добавил его в битовую корзину. Это сработало !


0

Я попытался Nativeвариант, но у меня не работает, наконец, восстановить ключ ssh по-старому и добавить -mпараметр в ssh-keygenкоманду. Также 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

Убедитесь, что вы изменили ссылку на репозиторий git на эту HTTPSопцию после того, как выбрали «Native» в настройках IntelliJ, если SSHне работает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.