Git-разрешение отказано (publickey)

Я на Mac Snow Leopard, и я только что установил git.

Я только что пытался

git clone git@thechaw.com: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, но все та же ошибка.

30 ответов


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

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

  • сначала вы захотите cd в свой .каталог СШ. Вскрывать терминал и выполните:

    cd ~/.ssh && ssh-keygen

  • Далее вам необходимо скопировать это в буфер обмена.
    • на OS X run:cat id_rsa.pub | pbcopy
    • на Linux run: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 bob@... (не забудьте перезапустить командную строку, чтобы убедиться, что конфигурация перезагружается)

вот это вы должны быть хороши для клонирования и проверки.

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


более обширное устранение неполадок и даже автоматическая фиксация могут быть сделаны с:

ssh -vT git@github.com

источник:https://help.github.com/articles/error-permission-denied-publickey/


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

иногда вы просто хотите клонировать свое собственное РЕПО, например, развернуть на сервере. В этом случае вам действительно нужен только доступ только для чтения. Но так как это свой repo, GitHub может отображать URL SSH, если это ваше предпочтение. В этом случае, если открытый ключ удаленного хоста не находится в Ключах GitHub SSH, ваш доступ будет быть отвергнутым,, который, как ожидается, произойдет.

эквивалентный случай, когда вы пытаетесь клонировать чужое РЕПО, к которому у вас нет доступа для записи с SSH URL.

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


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


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

1:

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

eval "$(ssh-agent -s)"

2:

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

ssh-add ~/.ssh/id_rsa

обратите внимание, что (по крайней мере для некоторых проектов) у вас должна быть учетная запись 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 минуту назад.

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


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

ssh-add ~/.ssh/id_rsa

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

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

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

ForwardAgent no 

to

ForwardAgent yes

получил тот же отчет об ошибке.

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

изменить URL на HTTP при клонировании:

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

моя проблема немного отличается: у меня установлен URL-адрес при добавлении существующего локального РЕПО в remote, используя:

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

чтобы исправить это, сбросьте URL на HTTP:

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

кстати, вы можете проверить свой URL с помощью команды:

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

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


Я встретил тот же вопрос, потому что я думал, что разница между SSH и HTTPS is

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

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

поэтому я изменил с HTTPS to SSH просто изменив https:// to ssh:// ничего в конце url не было изменено.

но правда:

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

git@github.com:USERNAME/REPOSITORY.git

что означает, что я изменил ssh://github.com/USERNAME/REPOSITORY.git to git@github.com:USERNAME/REPOSITORY.git это работает.

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


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

первый шаг: проверка, если у нас уже есть открытый ключ SSH.

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

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

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

Шаг 2: создание открытого ключа SSH

  1. Открыть Терминал.
  2. введите команду followong с действительным адресом электронной почты, который вы используете для github ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. вы увидите следующее в терминале 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 еще раз. В командной строке введите безопасный пароль.
  4. 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

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

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

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

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


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

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

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


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

попробуй ssh -vT git@github.com. Обратите внимание, где - это. Для меня это означало указывать!--13-->не мой \Users\MyLogin а в сети привод, из-за изменения переменных среды, выталкиваемых на сетевом уровне.

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


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

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

  git push <Git Remote path> --all

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

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

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

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

4 - git config --глобальный пользователь.email "ваш email id"

5 - git config --глобальный пользователь.имя"Твое имя"

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

7-cd ~/.ssh

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

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

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

enter image description here

enter image description here


в дополнение к ответу Rufinus, ярлык для копирования ключа ssh в буфер обмена в окна - это:

  • type id_rsa.pub | clip

Refs:


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


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


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

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

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


Я похож отказано в разрешении (publickey) ошибка при попытке запустить makefile.

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

клик скачать GitHub для Mac от -https://help.github.com/articles/set-up-git#platform-mac

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

[GitHub] в вашу учетную запись добавлен новый открытый ключ

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


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

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

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


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


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

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

pbcopy

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

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

ssh -i [your id_rsa path] -T github@github.com

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

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

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

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


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

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


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

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

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

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

я мог бы найти это поведение работает ssh -vT git@github.com


используйте ssh-ссылку из Github, но не добавляйте ее с ssh, просто используйте вкладку ssh на Git hub, чтобы клонировать ваше РЕПО.


Я смог преодолеть эту проблему, выполнив следующие шаги в моей системе ubuntu. Как я экспериментировал с беспарольный SSH к системе.

судо VI /и т. д./по ssh/sshd_config в

1) прокомментировал ниже : #Изменение не отключить туннель нешифрованные пароли PasswordAuthentication #да PasswordAuthentication нет ----> прокомментировал это.

2) затем перезапустить демон sshd, как показано ниже.

перезапуск службы sshd