git: fatal: не удалось прочитать из удаленного хранилища

358

Я пытаюсь настроить git с http://danielmiessler.com/study/git/#website для управления моим сайтом.

Я добрался до последнего шага в инструкции: Git Push Website + Master: Refs / Heads / Master

Я работаю с использованием командной строки git ming32 в win7

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Одной из проблем здесь может быть то, что программа ищет Bill@***.com. когда я подключаюсь через ssh к моему сайту, у меня другое имя пользователя (скажем, abc). так что, возможно, это должно быть abc@***.com. Если это так, я не знаю, как это изменить или я могу нажать под псевдонимом

LDN
источник
1
У меня была такая же проблема, иногда эта ошибка возникает, когда git-сервер недоступен или имеет что-то вроде «внутренней ошибки сервера».
Мортеза Зияе
2
Сначала посмотрите на .git/configфайл и убедитесь, что все в порядке. У него были неправильные значения set-url и origin для меня.
mixdev
Возможно, это решит проблему: help.github.com/articles/connecting-to-github-with-ssh
Гай Авраам,
Связанная проблема: stackoverflow.com/questions/10127818/…
Антон Тарасенко
Можете ли вы показать мне правильный порядок .git / config, а также .ssh / config ... потому что я в замешательстве abit жесткий.
Гумурух

Ответы:

134

Вы можете указать имя пользователя, которое SSH должен отправлять на удаленную систему, как часть URL вашего удаленного. Поставьте имя пользователя, а затем @перед удаленным именем хоста.

git remote set-url website abc@***.com:path/to/repo
Роб Майофф
источник
3
ps, есть ли способ добавить пароль, чтобы мне не приходилось его вводить?
LDN
15
отредактируйте файл, .git/configкоторый имеет параметр удаленного URL
Sayanee
@ user61629: Я знаю, что опаздываю на вечеринку, но вы должны рассмотреть возможность использования пар секретного / открытого ключа вместо паролей.
code_dredd
Какое имя пользователя? Имя пользователя компьютера или имя пользователя github?
Агент Зебра
11
Для Github вы всегда используете имя пользователя git. Пример: git@github.com:mayoff/uiimage-from-animated-gif.gitGithub выяснит вашу личность, посмотрев, какой SSH-ключ вы отправите.
Роб Майофф
191

Ваш ключ ssh, скорее всего, был удален из агента ssh

ssh-add ~/.ssh/id_rsa

где id_rsa - это ключ ssh, связанный с git repo

Джонни Кейдж
источник
7
Это сработало для меня! Я потратил много времени, пытаясь настроить файл ~ / .ssh / config для использования разных ключей для разных хостов, подумав, что этот файл является проблемой В конце концов, он должен был использовать правильный ключ для правильного хоста, но этот ключ был «удален». так ssh-add ~/.ssh/theKeyInQuestionчто вернул меня к работе с этим репозиторием, я не знал, удален ли ключ или что вообще означает «удаленный», но, по крайней мере, я смог снова пройти аутентификацию. SSH является для меня полной загадкой даже после нескольких месяцев работы с проблемами аутентификации. Проблемы с агентом ssh - еще одна вещь, о которой нужно знать!
Алекс Боллбах
Большое спасибо .. Это, наконец, сработало для меня после попытки создания, удаления и т. Д. Ключей SSH в моей учетной записи GitLab .... Спасибо!
Bms bharadwaj
Это решило мою проблему. У меня уже есть новый сгенерированный ключ ssh, добавленный на сервер. Этот ключ нужно добавить !!
Кашан
1
Это решило это для меня, я не понимаю почему .. Раньше это работало, и вдруг нет, есть ли процесс, который удаляет ключ из агента, это может произойти в случае аварии?
Мигель Стивенс
1
Я получаю Could not open a connection to your authentication agent..
Дан Даскалеску
130

Убедитесь, что у вас есть правильный URL в .git/config

url = git@github.com:username/repo.git

Если это ваш первый толчок, вам нужно настроить правильный восходящий

$ git push -u origin master

Вы можете проверить, какой ключ используется:

$ ssh -vvv git@github.com

Ответ должен содержать что-то вроде этого:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

Также можно определить правила для ssh в ~/.ssh/config, например, на основе псевдонимов:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

Вы можете установить соединение с разными портами, использовать разные имена пользователей и т. Д. Для каждого псевдонима.

Tombart
источник
1
Спасибо!! В какой-то момент, когда я клонировал мой репо, для него urlбыло установлено https://github.com/user/repo.git(без git@github.com), и поэтому он отказался использовать мой SSH-ключ. Может быть, это потому, что я изначально клонировал его с помощью GIthub для Windows (?)
Джедиджа,
Я должен был изменить url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gitк url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.gitи он работал снова
Рафаэль Bossek
Черт, ты потрясающий. Я пробовал так много других решений. Мой URL был https: также :(
agrublev
-vvvНамек был полезен для меня. Теперь я вижу, что он говорит: «Соединение закрыто через порт XXX.XXX.XXX.X 22».
Райан
Аааа, DeployHQ говорит, что "BitBucket в настоящее время испытывает незначительные проблемы с обслуживанием. Пожалуйста, проверьте их страницу статуса для получения дополнительной информации. Status.bitbucket.org " Бинго.
Райан
123

Я столкнулся с той же проблемой некоторое время назад ...

мой .git / config имел

url = git@github.com:manishnakar/polymer-demo.git

Я заменил его

url = https://github.com/manishnakar/polymer-demo.git 

и теперь это работает :)

Маниш Накар
источник
8
как это не выше рейтинга? git @ github у меня полностью не работает
hlitz
3
Если владелец репо не настроил sshключи, то, скорее всего, у вас возникнет эта проблема. Исправление, как указано, должно использовать httpsвместо этого, или настроить владельца репоssh
RyanNerd
@smileham это переключает удаленную связь с репозиторием с аутентификации на основе ssh на протокол https (при необходимости он запрашивает usr / pwd)
Винсент Чалмел
это правильный ответ, он работал мгновенно для меня.
Кингстон Фортуна
Любой, кто git remote set-url ...ошибся, как я, ИЛИ, кто по глупости имеет большой алфавит в своем имени пользователя (например, PeDro), как я (!), Должен следовать этому. Это сработало :)
Pe Dro
23

Попробуйте удалить переменную среды GIT_SSH с помощью unset GIT_SSH. Это было причиной моей проблемы.

Скотт Линднер
источник
1
Работает .. Интересно, откуда я взял переменную среды GIT_SSH :)
StrangeLoop
1
Для окон удалите переменную среды GIT_SSH из меню расширенных настроек. Работал на меня.
splintercell
Как? Что я пишу в терминале, чтобы сделать это?
Агент Зебра
17

Убедитесь, что ssh-agent запущен, выполнив следующую команду на вашем терминале:

eval $(ssh-agent -s)

Источник: документация Github

user3362907
источник
Это исправляет проблему и для меня. Спасибо
Ахмад
Это исправило это и для меня. Есть ли что-то, что я должен сделать, чтобы убедиться, что он будет запущен в будущем? Как поставить его как запись в моем .zshrcфайле?
Брейди Доулинг
14

Обычно это вызвано тем, что ключ SSH не совпадает с удаленным.

Решения:

  1. Перейдите в терминал и введите следующую команду (Mac, Linux) и замените ее на свой электронный адрес.

    ssh-keygen -t rsa -C "you@email.com"

  2. Скопируйте сгенерированный ключ, используя следующую команду, начиная со слова ssh.

    кот ~ / .ssh / id_rsa.pub

  3. Вставьте его в github, bitbucket или gitlab, соответствующий вашему пульту.
  4. Сохрани это.
Бастин Робин
источник
9

У меня такая же проблема.

Эта ошибка означает, что вы не указали свой удаленный URL-адрес, на который будет распространяться ваш код.

Вы можете установить удаленный URL двумя (в основном) способами:

  1. Укажите удаленный URL с помощью команды Git Bash.

    • Перейдите в каталог вашего проекта

    • Open Git Bash

    • Выполнить команду:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Упоминание удаленного URL прямо в конфигурационном файле

    • Перейдите в каталог вашего проекта

    • Переместить в папку .git

    • Откройте файл конфигурации в текстовом редакторе

    • Скопируйте и вставьте ниже строки

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

Для более подробной информации перейдите по этой ссылке .

Пратик Патель
источник
8

Проведя некоторые исследования, я наконец-то нашел решение для этого, вы объявили переменную окружения в путь plink.exe. Так что если вы удалите этот путь, откройте git bash и попробуйте клонировать через SSH, он будет работать.

Ссылка на эту ссылку

http://sourceforge.net/p/forge/site-support/2959/#204c

Мухаммед Насируддин
источник
7

У меня была такая же ошибка. Решение было следующим: я исправил свой URL в .git/config. Просто скопировал это из URL-адреса клонирования HTTPS. Это было бы что-то вроде этого:

url = https://github.com/*your*git*name*/*your*git*app*.git

Это сработало.

tan75
источник
если я написал это в своем конфигурационном файле под Windows OS, ошибка возникла по-другому, он сказал ... "/c/Users/asus/.ssh/config: строка 5: неправильная опция конфигурации: url"
gumuruh
использование https через ssh работает нормально, запрашивает имя пользователя и пароль
Kiran
4

Другой обходной путь:

Иногда это происходит со мной из-за проблем с сетью. Я не полностью понимаю проблему с правами root, но решение проблемы с переключением на другую подсеть или с использованием VPN

kip2
источник
Точно мой случай. Жаль, что я прочитал этот комментарий. После нескольких часов отладки подумал об использовании VPN, и все заработало.
Чайтанья
4

Если вы используете Gitlab, вам, возможно, придется войти в систему и принять новые условия Gitlab, прежде чем пытаться тянуть или толкать.

Марсело Агимовель
источник
Почему отрицательный голос? В тот же день я решил свою проблему, это было связано с новыми терминами gitlab.
Марсело Агимовель
Пожалуйста, удалите ваш downvote. Это верный ответ, он произошел после изменения условий в gitlab. Принятие новых условий в gitlab может решить проблему.
Марсело Агимовель
3

В вашем файле .git / config

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

И просто

git push YOUR_APP_NAME master:master 
user1982195
источник
3

В моем случае я использовал ключ ssh с паролем для аутентификации с помощью github. Я не настроил зрелище должным образом в Windows (только в Cygwin). Пропущенные шаги должны были указать переменную среды git_ssh на plink.exe. Кроме того, вам нужно завести github.com на сайт знакомых_хостов.

   plink github.com
   y
   <then ctrl-c>

Надеюсь это поможет!

Я уверен, что intellij дал бы мне более полезную ошибку, или, что еще лучше, попросил ввести пароль ssh.

Джефф Хой
источник
3

У меня был неправильный закрытый ключ ssh для Bitbucket вместе с правильным ключом в агенте ssh.

Сначала удалил все ключи

ssh-add -D

Затем добавил только правильный ключ.

ssh-add ~/.ssh/id_rsa
Foreever
источник
2

В моем случае я использую корпоративную сеть (без подключения к интернету) в офисе. Чтобы вытащить код из github, я установил https прокси в gitbash и затем использовал https вместо ssh для извлечения кода, он работает нормально. Однако, когда приходит push-код, прокси https не будет работать. Таким образом, либо переключение в сеть Интернет (с подключением к Интернету), либо установка прокси-сервера ssh могут решить проблему.

Wenwen
источник
2

На самом деле я много чего пытался заставить его работать на Win7, так как менял SSH exectun fron native на build-it и обратно и та же ошибка. Случайно я изменил его на HTTPS в файле ".git / config" как:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

и это наконец сработало. Так что, возможно, это может сработать и для вас.

Игнасио Лукатеро
источник
2

У меня была та же проблема, и через некоторое время я увидел, что я нахожусь под пользователем root (с помощью sudo -s). Пусть это поможет кому-то.

Жан-Люк Барат
источник
Я подтверждаю, что даже если вы настроили ssh-ключ на своем компьютере и в BitBucket, он все равно будет отображать эту ошибку, если вы попытаетесь выполнить 'git pull' с помощью команды 'sudo'.
ElectroBuddha
2

Если после команды «git push origin master» вы видите ошибку «не удалось прочитать из удаленного репозитория», попробуйте это

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 
sushmitha
источник
2

У меня был прекрасно работающий мерзавец, и внезапно я получил эту ошибку, когда попытался подтолкнуть к мастеру. Как я выяснил, это произошло из-за проблем с хостом хранилища.

Если вы используете GitHub или Bitbucket, вы можете легко проверить статус на

https://status.github.com/messages или https://status.bitbucket.org/

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

Адам
источник
1

У меня была та же ошибка, которая привела меня к этому ответу, который не помог мне. Я впервые пытался создать новый «пустой» репозиторий, используя команды ниже для отслеживания местоположения NTFS:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

Моя проблема оказалась при использовании обратной косой черты вместо прямой косой черты в расположении NTFS при попытке добавить источник, чтобы установить (новую) отслеживаемую восходящую ветку.

Мне пришлось удалить происхождение, используя:

git remote rm origin

Затем снова добавьте начало координат, используя ожидаемые косые черты

git remote add origin //myserver.mycompany.local/myrepository.git

Надеюсь, это поможет кому-то в будущем.

Майк
источник
1

Я получил эту ошибку после смены компьютеров. Я использую SourceTree с Bitbucket.

Поэтому мне пришлось добавить ключ SSH, сгенерированный SourceTree, на новом компьютере в Настройки Bitbucket> Безопасность> Ключи SSH при подключении к моей учетной записи Bitbucket в Интернете.

Эби
источник
1

Я решил эту проблему, перезапустив терминал (откройте новое окно / вкладку).

Так что, если вы действительно не хотите / не должны понимать основную проблему, стоит попробовать метод тестирования, прежде чем копать глубже :)

mraxus
источник
0

Для тех, кто имеет эту проблему в частном репо. убедитесь, что вы приняли соглашение XCode на удаленном сервере: потребовались недели, чтобы найти это исправление

Используйте эту команду из командной строки: sudo xcodebuild -license

Джозеф Боладе Кэкстон-Идову
источник
0

я просто хотел поделиться этим, я нашел легкое решение для этого:

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

просто выйдите из gitlab и войдите снова. Проблемы должны быть исправлены.

Нечама б
источник
0

При использовании putty / pageant убедитесь, что вы не забыли добавить правильный ключ SSH в pageant, иначе эта ошибка появляется. ДУХ

пюре
источник
0

Перейдите в терминал MINGW32 и введите команду: git branch --set-upstream-to = origin / (имя ветви)

Джунед Ахмед
источник
0

Если вы все еще получаете ту же ошибку, пожалуйста, убедитесь, что в настройках git-> ssh tab-> ssh для клиента установлено openSSHвведите описание изображения здесь

Анил Кумар Б
источник
0

Согласно моему опыту, одной из причин возникновения этой проблемы является нестабильное подключение к Интернету .

Марван Салим
источник