Как устранить ошибку 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
Ответ 2
Более подробное устранение неполадок и даже автоматическое исправление можно выполнить с помощью:
ssh -vT [email protected]
Источник: https://help.github.com/articles/error-permission-denied-publickey/
Ответ 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, вы не будете использовать те же ключи, которые вы сгенерировали
Ответ 15
Один из самых простых способов
перейти к терминалу -
git push <Git Remote path> --all
Ответ 16
В дополнение к ответу Rufinus ярлык для копирования вашего ssh-ключа в буфер обмена в Windows:
работ:
Ответ 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 дает вам клонировать ваше репо.