Git: Отказано в доступе (publickey), неустранимый - Не удалось прочитать из удаленного хранилища. при клонировании Git-репозитория


153

Я не могу клонировать Git-репозиторий и получаю эту ошибку:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Я прочитал Bitbucket, Windows и «fatal: не могу прочитать пароль для» , но проблема все еще есть.

Я продолжил, но теперь получаю эту ошибку

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

и хранилище существует.


Вы уверены, что это git-репозиторий?
могила

Да, это так . Я новичок в Git, получая эту ошибку при клонировании. Я добавил электронную почту и имя в глобальный конфигурационный файл, используя команды git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
KCS

Основная причина в том, что репо не может распознать вас как пользователя git-сервера. Не могли бы вы получить доступ к серверу через SSH?
Малъ Скрылевъ

Если у кого-то возникла эта проблема при использовании Github, выполните действия, указанные здесь: help.github.com/en/articles/… Это сработало для меня.
Рунак

Ответы:


69

Похоже, проблема с разрешениями, а не проблема Windows 7.

Ваш ключ ssh не авторизован Permission denied (publickey).

Вам нужно создать открытый ключ ssh и попросить администратора репозитория Git добавить sshоткрытый ключ

Информация о том, как это сделать: сбой сохранения ключа ssh


27
Это странно Хранилище является публичным, и я клонирую публичный репозиторий. Я не уверен, почему мне следует спрашивать у администратора разрешение на клонирование его / ее публичного репозитория, размещенного на Github.
Шайлен

5
Да, неверно, вам не нужно спрашивать администратора, это проблема с локальным git.
Иван Кастелланос

3
Почему это сложно? Мне это удалось, но это было не безболезненно.
Никлас Р.

9
Вам не нужно авторизовать ключ для публичных репозиториев, просто используйте протокол HTTPS: stackoverflow.com/a/33072867/1385678
Diego V

225

Для людей, которые приходят сюда, которые просто пытаются получить репозиторий, но не заботятся о протоколе (ssh / https), вы можете просто использовать https вместо ssh (если это поддерживается).

Так, например, вы используете

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

вместо того

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

6
Это наиболее подходящий запасной план, если разрешения ssh не разрешены или вы хотите пропустить эту часть.
Вахиб Ул Хак

13
Этот ответ изменил механизм с sshна https. Это не решает исходную проблему с помощью ssh для доступа к хранилищу. Интересно, как это может продолжать получать голосование как хороший ответ на вопрос. Другие ответы ниже, решают это правильно.
Армин

3
Первоначальная проблема - мерзавец-новичок, пытающийся клонировать репо. Если цель состоит в том, чтобы снять публичное репо, это самый быстрый эффективный ответ.
Вивек Чавда

Спасибо, что спасли меня от самоубийства. Кстати, это может быть использовано для частного репо, если у вас есть имя пользователя и пароль.
БИЛЛ ВАГНЕР

81

Если после создания SSH и добавления его в вашу учетную запись Bitbucket или где-то еще существует проблема с доступом, вам необходимо выполнить следующие действия в терминале на GitBash, OSX или Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Затем, если вы не видите свой ключ в списке, добавьте его со следующим (замените identityего реальным именем):

# Add a new identity
ssh-add ~/.ssh/identity

Это сработало для меня.


3
ssh-add ~/.ssh/identityвозвращаемая ошибка/Users/lee/.ssh/identity: No such file or directory
ли

14
Запуск «ssh-add» из «~ / .ssh» (и ввод парольной фразы для моего файла «~ / .ssh / id_rsa» при появлении запроса) решил проблему для меня.
Джеймс Фьюри

1
Я смог вытащить свой репо, но не толкнул без этого, ура!
Димитар Несторов

Ответ @james Furey помог мне исходному дереву идентифицировать URL-адрес ssh как репозиторий git.
Фанат

2
работал для меня ... после нескольких часов потоотделения и пробуя разные вещи. Единственное, что вместо идентичности, в конце концов, используйте имя в вашей собственной системе. Перейдите в папку .ssh, выполнив команду cd в терминале, а затем введите команду «ls» в терминале. А затем повторить команду «тождество» сверху своим собственным файлом. Перейдите к терминалу sourcetree и: cd ~затем cd .sshзатем ls(скопируйте имя без расширения .pub), затем (выполните эту команду)ssh-add ~/.ssh/(copied name)
Tejas

21

Я столкнулся с той же проблемой с GitHub . Вот как это решить!

  1. Сгенерируйте ключ SSH на вашем компьютере, как описано здесь: Генерация ключей SSH .
  2. Войдите в свой аккаунт GitHub : GitHub Login .
  3. В вашей учетной записи добавьте сгенерированный SSH-ключ: SSH-ключи моей учетной записи .
  4. Попробуйте еще раз к git cloneпроекту.

Работал как шарм !!
Prakhar

1
Сейчас я использовал этот ответ на 3 новых операционных системах за последние 5 лет, и каждый раз он работал идеально.
котооле

Судя по всему, High Sierra требует, чтобы пользователь зарегистрировал ключ в файле .ssh / config. Эль-Капитан как-то обходился без этого.
dsomnus

14

У меня была эта проблема на Mac - хотя я правильно настроил SSH для доступа к своему Git-репозиторию, после перезапуска (и некоторое время Mac находился в противостоянии) все мои учетные данные были удалены. Очевидно, по какой-то причине ключ публикации был установлен на 644, что привело к его удалению из цепочки для ключей. Читать:

  • chmod 600 открытый ключ
  • ssh-add ~/.ssh/[your private key]- это должно показать, что личность была добавлена. Ключевой файл, который вам нужен, это файл без расширения .pub.
  • ssh-add -l должен показать вам недавно добавленную личность

редактировать: по-видимому, MacOS имеет тенденцию к удалению ключей - после загрузки обновления High Sierra (но я еще не установил его) мой ключ был удален, и мне пришлось добавить его снова через ssh-add


2
Это решение остается верным после обновления macOS High Sierra до версии 10.13.1. В частности, Sourcetree было приложением, которое обнаружило проблему, когда я попытался отправить коммит в удаленный репозиторий. Вышеуказанные шаги решили проблему для меня.
Пол Бонневиль

У меня была эта проблема на 10.13.4, и это решение работало для меня.
Эндрю Эблинг

11

Я также столкнулся с той же проблемой. Я сделал следующее, и это сработало для меня:

  1. Сгенерируйте ключи из клиента GIT GUI в Windows. Скопируйте этот ключ в буфер обмена.
  2. Откройте свой аккаунт на bitBucket/сайте git и добавьте этот ключ в свой профиль. Таким образом, сервер узнает, что вы являетесь законным пользователем, осуществляющим доступ из законной системы.
  3. Вот и все. Все push-команды работали для меня впредь.

Это помогло мне увидеть, что я сгенерировал свой RSA без запуска Git Bash в качестве администратора, который поместил мой ключ RSA в диск «h»: oops:
tylerlindell

7

Для меня, когда я хотел клонировать из своего репозитория, у меня было то же самое сообщение, замеченное перед «Отказано в доступе (publickey), фатальный: не удалось прочитать из удаленного репозитория». Решение для моего случая - не использовать sudo перед клоном .


Большое спасибо @mustapha, вы действительно экономите мое время.
Винай Кумар

7

Github (или Bitbucket) не может найти ваш ключ ssh на своем сервере.

Просто добавьте свой ключ в настройках своего аккаунта.


6

Если вы сгенерируете новый открытый ключ ssh и вставите его в bitbucket или github и

это не помогло - попробуйте перезагрузить компьютер . Это помогло мне!


Спасибо, это было то, что мне нужно было сделать.
Стеф

Мне пришлось закрыть терминал и открыть новый, чтобы увидеть, как он работает.
Рахул

5

Вам нужно создать новый ключ ssh, запустив ssh-keygen -t rsa.


Ссылка @Joel Heroku удалена. Спасибо
biniam

4

Я получил ошибку ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... когда я пытался установить контакт из приглашения Git Bash в Bitbucket после того, как мой ноутбук умер из-за плохого обновления Windows 10 и был возвращен к заводским настройкам. Я восстановил все мои файлы SSH из резервной копии.

Причиной ошибки оказалось несоответствие имени моей учетной записи Windows после восстановления компьютера. Я узнал, что файл открытого ключа id_rsa.pubзаканчивается легко читаемой строкой, содержащей имя моей учетной записи Windows, за которым следует @знак, а затем имя компьютера.

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

Чтобы решить эту проблему, я просто отредактировал файл с открытым ключом id_rsa.pubи удалил средний инициал в моем имени в конце. Я придерживался того же имени компьютера, так что все было в порядке. Я скопировал содержимое файла в буфер обмена Windows. Затем я вошел в Bitbucket, зашел в «Настройки Bitbucket» под моим аватаром и добавил новый открытый ключ, куда я вставил новое содержимое.

Вернувшись к приглашению Git Bash, я подтвердил, что теперь он работает, введя команду ...

ssh -T git@bitbucket.org

... и я получил сообщение, что я вошел в систему.


4

В macOS / Linux (Ubuntu):

1. Для аутентификации вам нужно добавить вашу публичную часть вашей пары ключей SSH в bitbucket из ваших пользовательских настроек: Настройки пользователя -> Ключи SSH

Как правило, указанная публичная часть находится в вашем каталоге ~ / .ssh id_rsa.pub. обратите внимание на .pubчасть имени файла для Public. это поможет вам сгенерировать один, если у вас его еще нет

Вы еще не закончили ...

2. Вам необходимо сообщить вашей системе, какой ключ использовать с каким удаленным хостом, поэтому добавьте эти строки в файл ~ / .ssh / config.

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Где PRIVATE_KEY_FILE_NAMEимя частной части вашей пары ключей SSH, если вы с ней не связались, обычно ее имя по умолчанию: id_rsa в этом случае замените PRIVATE_KEY_FILE_NAMEвыше на id_rsa(закрытый ключ НЕ имеет .pubрасширения)


Обратите внимание, что вы написали "Ubuntu" с ошибкой - правки должны быть не менее 6 символов, поэтому я не могу предложить правку :)
Миша Наследов

4

Полезная тема, и я не принесу много нового на стол. Шаг, который я предпринял, также является частью описания, на которое Максим старательно указывает, но некоторые могут его не заметить. Раздел Добавление вашего SSH-ключа в ssh-agent .

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

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

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

3

Я столкнулся с той же проблемой при запуске git cloneкоманды из командной строки Windows. Но команда успешно запускается из Git Bash .


3

У меня была похожая проблема. Я изменил ключи SSH и перезапустил и попробовал все другие 'n' решения. Но реальная проблема для меня заключалась в том, что наш протокол gitlab по умолчанию был изменен с ssh на https.

проверьте удаленный URL с

git remote -v

изменить удаленный URL

git remote set-url origin https://URL

Это прекрасно, нам не нужно настраивать SSH.
Рохит Парте

Я должен был сделать то же самое. В этом случае у меня не работает ключ ssh
Дани

Неустранимый : невозможно получить доступ к « bitbucket.org:xxxxxx/xxxxxxxxt »: номер порта закончился на «r»
nosequeweaponer

2

Если все не удается, как это было со мной, удалите GIT, переустановите. По какой-то причине это исправляет.

PS

  1. Я попытался сгенерировать новые ключи и обновить в открытых ключах SSH
  2. Также попытался удалить все ключи и попытался создать новый ключ.
  3. И НЕТ, ничего плохого в моем .gitconfig

2

исправить для hubинструмента cli:

  • git config --global hub.protocol https на длительный срок
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSдля немедленного исправления

Эта ошибка возникает с помощью hubинструмента командной строки из-за неправильного значения hub.protocolgit-config по умолчанию . Они устанавливают репо на

git://github.com/schacon/ticgit.git

вместо того, что GitHub на самом деле принимает, а именно https://github.com/schacon/ticgit.git.


Чтение LESS=+/"HTTPS instead" man hubобъяснит, откуда взята вышеприведенная команда «долгосрочного исправления».


Это спасло мой день!
Джей Ли

1

Во время клонирования у меня была похожая проблема [моя ОШИБКА: Отказано в доступе (publickey). Неустранимый: Не удалось прочитать из удаленного хранилища. Пожалуйста, убедитесь, что у вас есть правильные права доступа .. и т. Д.]

- В моем случае я использовал bitBucket / UBUNTU14.04, но УЖЕ был набор ключевых файлов, которые я сгенерировал ранее, и я изменил имя файлов. Я просто скопировал файлы в стандартный формат имени id_rsa & id_rsa.pub. Затем я перезапустил команду без проблем.

OBTW : Я мог бы также использовать запрос пароля, используя клон в стиле HTTP.


0

У меня была похожая проблема на Linux. Я решил проблему, войдя на сервер github и создав ключ развертывания. Это в настройках хранилища. Затем я скопировал и вставил свой открытый ключ (который обычно находится в ~ / .ssh / id_rsa.pub, но ваша конфигурация может отличаться). Есть флажок, чтобы дать этому ключу доступ для записи. Нажмите на него (если только вы не используете git для развертывания, в этом случае не нажимайте на него).


0

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

Добавление этого здесь на случай, если кто-то видел, что другие ответы, кажется, не относятся к их ситуации.


0

Я столкнулся с той же проблемой при настройке ssh для gitlab. У меня уже есть ssh для, githubи я не мог перезаписать это. Шаги, которые работали для меня:

  1. Сгенерируйте SSH с новым путем и добавьте его в список ssh ssh-add /path/to/new/id_rsa.
  2. Создайте файл с именем configв ~/.ssh/использовании. Я использовал vi ~/.ssh/config/.
  3. Добавьте это во вновь созданный файл

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Сохранить и выйти.

После этого перезапустите терминал и попробуйте нажать, он должен работать


0

Если вы хотите клонировать проекты с открытым исходным кодом для отправки запроса на извлечение:

Я хотел клонировать проект с открытым исходным кодом, чтобы я мог отправить несколько запросов на извлечение. Проблема заключалась в том, что у меня не было разрешений от владельца проекта. Независимо от того, что я намеревался представить PR, вот жизнеспособная альтернатива:

Мое решение:

  1. Fork Repository

Вилка Репо

  1. Затем клонируйте из вашего разветвленного хранилища. Клон из разветвленного репо

  2. Поработайте над своими функциями, а затем отправьте запрос на извлечение.



0

Решение: На сервере, который вы пытаетесь клонировать или переместить с cat ~ / .ssh / id_rsa.pub Перейдите в GitHub, настройки, ключи SSH и GPG , ключ вставки нового ключа SSH .


0

Я вижу, что это сообщение об ошибке имеет много разных причин. У меня была такая же ошибка, когда я пытался настроить локально другой репозиторий рядом с уже работающим с ssh и т. Д. И подключить его к тому же серверу, но к другому репозиторию. Здесь не было найдено ответов, но я понял это. Поэтому я публикую это. Надеюсь, поможет кому-то.

git remote add origin git@git.ourserver.com:teamalpha/repositorytwo.git

0

если ни один из этих ответов не поможет и

  1. вы используете Windows
  2. вы генерируете свой ключ с помощью Putty или вы установили Putty на свой компьютер
  3. вы генерируете свой ключ с помощью CMD или PowerShell

Пытаться

  1. удали свои ключи
  2. найдите в Git Bash в Windows, а затем сгенерируйте новый ключ с помощью командной строки Git Bash
  3. добавить открытый ключ к вашему онлайн репо

Затем вы найдете после git clone и введите yes для подтверждения, он должен начать клонировать


-2

Это может быть глупо, но это случилось с нами

Если вы используете bitbucket и Sourcetree и просто копируете и вставляете URL-адрес клона в новое диалоговое окно репозитория, то при извлечении или выталкивании будет отображаться та же ошибка.

Убедитесь, что вы удалили материал 'git clone' перед URL.

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