Как устранить ошибку Permission denied (publickey) при использовании Git?

Я на Mac Snow Leopard, и я просто установил git.

Я просто попробовал

git clone [email protected]:cakebook.git

но это дает мне эту ошибку:

Initialized empty Git repository in '/Users/username/Documents/cakebook/.git/'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Что мне не хватает?
Я также пробовал делать ssh-keygen без какой-либо passphase, но все равно такую же ошибку.

Ответ 1

пользователь не создавал пару открытых/закрытых ключей ssh, заданную ранее?

Эта информация работает с theChaw, но может быть применена ко всем другим репозиториям git, которые поддерживают аутентификацию SSH-ключей. (См. gitolite, gitlab или github, например.)

Сначала начните с настройки собственного набора пар открытый/закрытый ключ. Этот может использовать DSA или RSA, поэтому в принципе любой ключ, который вы настроите, будет работать. В большинстве систем вы можете использовать ssh-keygen.

  • Сначала вы захотите перейти в ваш каталог .ssh. Откройте терминал и запустите:

    cd ~/.ssh && ssh-keygen

  • Далее вам нужно скопировать это в буфер обмена.
    • На OS X запустите: cat id_rsa.pub | pbcopy
    • В Linux запустите: cat id_rsa.pub | xclip
    • В Windows (через Cygwin/Git Bash) запустите: cat id_rsa.pub | clip
  • Добавьте ключ в свою учетную запись через веб-сайт.
  • Наконец, настройте ваш .gitconfig.
    • git config --global user.name "bob"
    • git config --global user.email [email protected] (не забудьте перезапустить командную строку, чтобы убедиться, что конфигурация перезагружена)

Вот почему вы должны хорошо клонировать и оформить заказ.

Дополнительную информацию можно найти на https://help.github.com/articles/generating-ssh-keys (спасибо @Lee Whitney)  -

пользователь сгенерировал пару открытых/закрытых ключей ssh, установленных ранее?

  • проверить, какой ключ был авторизован в настройках вашего аккаунта github или gitlab
  • сообщает, какой соответствующий закрытый ключ должен быть связан с вашим локальным компьютером

eval $(ssh-agent -s)

расскажите, где находятся ключи

ssh-add ~/.ssh/id_rsa

Ответ 3

Эта ошибка может произойти, если вы обращаетесь к URL-адресу SSH (чтение/запись) вместо Git URL только для чтения, но у вас нет доступа на запись к этому репо.

Иногда вы просто хотите клонировать свое собственное репо, например. развертывание на сервере. В этом случае вам действительно нужен только ЧИТАТЕЛЬНЫЙ доступ. Но поскольку это ваше собственное репо, GitHub может отображать URL SSH, если это ваше предпочтение. В этой ситуации, если ваш открытый ключ открытого хоста отсутствует в ваших SSH-ключах GitHub, ваш доступ будет отклонен, , который, как ожидается, произойдет.

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

Одним словом, , если вы намерены клонировать только репо, используйте URL-адрес HTTPS (https://github.com/{user_name}/{project_name}.git) вместо URL-адреса SSH ([email protected]:{user_name}/{project_name}.git), который позволяет избежать (ненужного) открытого ключа проверка.


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

Ответ 4

Справка github помогла мне разобраться в этой проблеме. Похоже, что ssh-ключ не был добавлен в ssh-agent. Это то, что я закончил делать.

Команда 1:

Убедитесь, что ssh-agent включен. Команда запускает ssh-agent в фоновом режиме:

eval "$(ssh-agent -s)"

Команда 2:

Добавьте свой SSH-ключ в ssh-agent:

ssh-add ~/.ssh/id_rsa

Ответ 5

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

ssh-add ~/.ssh/id_rsa

Ответ 6

Получил одинаковый отчет об ошибках.

Исправлено использование HTTP вместо этого. Поскольку я не хочу устанавливать "SSH-ключи" для тестового ПК.

Измените URL-адрес на HTTP при клонировании:

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

Моя проблема немного другая: у меня есть URL-адрес при добавлении существующего локального репо на удаленный доступ, используя:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

Чтобы исправить это, сбросьте URL-адрес HTTP:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, вы можете проверить свой URL, используя команду:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Надеюсь, это поможет кому-то вроде меня. : D

Ответ 7

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

Посмотрите на ключи, перечисленные в вашем агенте проверки подлинности (ssh-add -l)
(если вы его не видите, добавьте один из существующих ключей с помощью ssh-add/path/to/your/key (например: ssh-add ~/.ssh/id_rsa))
(если у вас нет каких-либо ключей, сначала создайте его. Смотрите: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html или просто Google ssh-keygen)

Чтобы убедиться, что у вас есть ключ, связанный с вашей учетной записью github:

Перейдите к: https://github.com/settings/ssh

Вы должны увидеть хотя бы один ключ с хэш-ключом, соответствующим одному из хэшей, которые вы видели, когда вы набрали ssh-add -l всего минуту назад.

Если вы этого не сделаете, добавьте его, а затем повторите попытку.

Ответ 8

У меня была небольшая ситуация, я был зарегистрирован на удаленном сервере и использовал git на сервере, когда я запускал любую команду git, я получил одно и то же сообщение

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

Как я исправил это, изменив файл /etc/ssh _config на моем Mac. от

ForwardAgent no 

to

ForwardAgent yes

Ответ 9

Я встретил ту же проблему из-за того, что мне показалось, что разница между SSH и HTTPS

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

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

Поэтому я перешел с HTTPS на SSH, просто изменив https:// на ssh:// ничто в конце URL-адреса не было изменено.

Но правда такова:

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

[email protected]:USERNAME/REPOSITORY.git

Это означает, что я изменил ssh://github.com/USERNAME/REPOSITORY.git на [email protected]:USERNAME/REPOSITORY.git Это работает.

Глупая ошибка, но надежда помогает кому-то!

Ответ 10

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

Первый шаг: проверка наличия общего ключа SSH.

  • Открыть терминал.
  • Введите ls -al ~/.ssh, чтобы увидеть, существуют ли существующие ключи SSH:

Проверьте список каталогов, чтобы узнать, есть ли у вас общедоступный ключ SSH. Общедоступность общего доступа является одним из следующих d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub

Если вы не нашли, переходите к шагу 2, иначе следуйте шагу 3

Шаг 2: Создание общедоступного ключа SSH

  • Открыть терминал.
  • Введите команду followong с действующим адресом электронной почты, который вы используете для github ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • В терминале Generating public/private rsa key pair вы увидите следующее. Когда он предложит "Enter a file in which to save the key,", нажмите Enter. Это принимает местоположение файла по умолчанию. Когда он предложит Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] Просто нажмите Enter еще раз. В командной строке введите защищенную кодовую фразу.
  • Enter passphrase (empty for no passphrase): [Type a passphrase] нажмите enter, если вы не хотите, чтобы Enter same passphrase again: [Type passphrase again] снова нажмите Enter

Это приведет к созданию id_rsa.pub

Шаг 3: Добавление вашего SSH-ключа в ssh-agent

  • Интерминальный тип eval "$(ssh-agent -s)"
  • Добавьте свой SSH-ключ в ssh-agent. Если вы используете существующий SSH вместо того, чтобы генерировать новый ключ SSH, вам нужно будет заменить id_rsa в команде с именем вашего существующего закрытого ключа файл. Введите эту команду $ ssh-add -K ~/.ssh/id_rsa

Теперь скопируйте SSH-ключ и добавьте его в свою учетную запись github

  • В терминале введите эту команду с вашим именем ssh файла pbcopy < ~/.ssh/id_rsa.pub Это скопирует файл в буфер обмена Теперь откройте учетную запись github. Перейдите в раздел Настройки > SSH и ключи GPG > Новый ключ SSH Введите название и вставьте ключ из буфера обмена и сохраните его. Вуала, все готово.

Ответ 11

В базовых инструкциях GIT не указана ссылка на материал SSH. Следуя некоторым ссылкам выше, я нашел справочную страницу GIT, которая объясняет, шаг за шагом, как это сделать для разных операционных систем (ссылка будет определять вашу ОС и перенаправлять соответственно):

http://help.github.com/set-up-git-redirect/

Он просматривает все необходимое для GITHub, а также дает подробные объяснения, такие как "зачем добавлять кодовую фразу при создании ключа RSA". Я решил, что опубликую его, если это поможет кому-то еще...

Ответ 12

В Windows убедитесь, что все ваши приложения согласны с HOME. Msys удивительно НЕ сделает это за вас. Мне пришлось установить переменную окружения, потому что ssh и git, похоже, не соглашались с тем, где находится мой каталог .ssh.

Ответ 13

Вы находитесь в корпоративной среде? Возможно ли, что ваши системные переменные недавно изменились? Согласно такому такому ответу, ssh-ключи живут на %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub. Так что если %HOMEDRIVE% недавно изменился, git не знает, где искать ваш ключ и, следовательно, все аутентификационные вещи.

Попробуйте запустить ssh -vT [email protected]. Обратите внимание, где находится identity file. Для меня это указывало не на мой обычный \Users\MyLogin, а скорее на сетевой диск из-за изменения переменных среды, выдвигаемых на сетевом уровне.

Решение? Поскольку мой новый %HOMEDRIVE% имеет те же права доступа, что и мои локальные файлы, я просто переместил туда свою папку .ssh и назвал ее день.

Ответ 14

Ребята, вот как это работает для меня:

1- Открыть терминал и перейти к пользователю [см. Прикрепленное изображение]

2- Откройте папку .ssh и убедитесь, что в ней нет таких файлов, как id_rsa или id_rsa.pub, в противном случае иногда она не будет правильно переписывать файлы

3 - git --version [Проверить установку и версию git]

4- git config --global user.email "ваш идентификатор электронной почты"

5- git config --global user.name "ваше имя"

6- git config --list [убедитесь, что вы указали свое имя и адрес электронной почты]

7- cd ~/.ssh

8- ssh-keygen, запрашивает сохранение файла, разрешает

9- cat ~/.ssh/id_rsa.pub [Доступ к вашему публичному ключу и копирование ключа в настройки Gerrit]

Примечание: вы не должны использовать команду sudo с Git. Если у вас есть веская причина, по которой вы должны использовать sudo, убедитесь, что вы используете его с каждой командой (вероятно, просто лучше использовать su, чтобы получить оболочку от имени пользователя root). Если вы генерируете ключи SSH без sudo, а затем пытаетесь использовать команду типа sudo git push, вы не будете использовать те же ключи, которые вы сгенерировали

enter image description here

enter image description here

Ответ 15

Один из самых простых способов

перейти к терминалу -

  git push <Git Remote path> --all

Ответ 17

Если у вас есть несколько ключей, вам может понадобиться сделать ssh-add private-keyfile

Ответ 18

Я только что испытал эту проблему при настройке моего текущего проекта, и ни одно из вышеперечисленных решений не работает. поэтому я попытался посмотреть, что действительно происходит в отладочном списке, используя команду ssh -vT git @github.com. Я заметил, что имя моего личного ключа отсутствует в списке. поэтому переименование имени файла закрытого ключа на "id_rsa" выполняет эту работу. надеюсь, что это может помочь.

Ответ 19

Его довольно прямолинейно. Введите следующую команду

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Сгенерируйте ключ SSH. Откройте файл и скопируйте содержимое. Перейдите на страницу настройки GitHub и нажмите на SSH-ключ. Нажмите "Добавить новый SSH-ключ" и вставьте содержимое здесь. Что это:) Вы не должны снова видеть проблему.

Ответ 20

Я ударил эту ошибку, потому что мне нужно было предоставить мои текущие разрешения для рабочего каталога 700:

chmod -R 700 /home/ec2-user/

Ответ 21

При попытке запустить make файл я получал аналогичную ошибку Permission denied (publickey).

В качестве альтернативы вышеприведенным шагам SSH вы можете установить собственное приложение GitHub для Mac.

Нажмите Загрузить GitHub для Mac из https://help.github.com/articles/set-up-git#platform-mac

Как только вы закончите настройку с помощью своей учетной записи hb-сервера git (я также установил инструменты командной строки git, но не уверен, нужен ли этот шаг или нет), я получил электронное письмо -

[GitHub] В ваш аккаунт добавлен новый открытый ключ

и моя ошибка была исправлена.

Ответ 22

Я получал ту же ошибку. Моя проблема заключалась в смешении в судо.

Я не мог создать каталог, в который я клонировал автоматически, без префикса команды git clone с помощью sudo. Однако, когда я это сделал, мои ключи ssh, на которые не ссылались должным образом.

Чтобы исправить это, я устанавливаю разрешения через chmod в родительском каталоге, в котором я хотел бы содержать свой клон, чтобы я мог написать ему. Затем я запустил git clone БЕЗ префикса sudo. Тогда это сработало! Я изменил разрешения после этого. Готово.

Ответ 23

Я получал эту ошибку, потому что я сгенерировал ключи ssh с неправильным адресом электронной почты. Мне удалось подключиться с помощью ssh, но не используя git. Решение состояло в том, чтобы восстановить ключи, используя основной адрес электронной почты моей учетной записи github.

Ответ 24

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

Ваш открытый ключ сохраняется в файле id_rsa.pub; это ключ, который вы загружаете в свою учетную запись. Вы можете сохранить этот ключ в буфер обмена, выполнив следующее:

pbcopy < ~/.ssh/id_rsa.pub

  • скопируйте SSH-ключ в буфер обмена, вернитесь на веб-портал.
  • В поле SSH Key вставьте свой SSH-ключ.
  • В поле "Имя" укажите имя ключа.
  • сохранить.

Ответ 25

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

ssh -i [your id_rsa path] -T [email protected]

Ответ 26

Самое простое решение этого, когда вы пытаетесь нажать на репозиторий с другим именем пользователя:

 git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git

Ответ 27

Эта странная ошибка, в моем случае, была симптомом gnome-keyring-daemon неправильного наименования ключа, которому он требовал пароль.

Я выполняю шаги, описанные здесь, и вводил пароль через терминал. Ошибка, так называемый интерфейс GUI, была решена. См.: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring

Ответ 28

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

Проблема решается просто копированием текущего открытого ключа ssh в репозитории. Ключ будет доступен вашему пользователю /home/.ssh/id_rsa.pub

Ответ 29

В моем MAC я решил это с помощью

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

По какой-то причине мой git остановился, чтобы найти закрытый ключ в файле github_rsa. Это произошло в конкретном репо. Я имею в виду, что в других репозиториях git работали нормально.

Я думаю, что это ошибка.

Я мог бы найти это поведение ssh -vT [email protected]

Ответ 30

Используйте ссылку ssh из Github, но не добавляйте ее с помощью ssh, просто используйте то, что вкладка ssh в концентраторе git дает вам клонировать ваше репо.