Отказано в разрешении на Github: у агента добавления ssh нет идентификаторов


148

Это мой первый доступ к GitHub, и у меня нет опыта использования консоли. Я на MacBook, используя Bash. Когда я пытаюсь получить доступ к GitHub, я получаю это:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Я пытался следовать инструкциям на странице Github по поводу отказа в разрешении.

Когда я использую ssh -vT git@github.com, я получаю следующее:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Затем eval "$(ssh-agent -s)"возвращает «Agent pid 2314», однако ssh-add -lвозвращает «Агент не имеет идентификаторов».

И вот где я застрял.


У вас есть ключ SSH? У вас есть это в вашей учетной записи GitHub? У вас есть ключ на вашем Mac?
Этан Рейснер

Я искал ответ на этот вопрос (не разбираясь во всей этой системе), и нашел это: mac.github.com Это решило все мои проблемы. Я очень рекомендую это. Спасибо за толчок в правильном направлении, Этан!
Темно,

4
Вы можете добавить ответ на этот вопрос (с более подробной информацией о том, как он решил вашу проблему) и принять ваш ответ.
Этан Рейснер

Хорошо, я отправил ответ. ТАК говорит мне, что я могу принять его только через 2 часа.
Темно

Ответы:


194

Полная информация в этом ответе .

Таким образом, когда ssh-add -lвозвращается «Агент не имеет идентификаторов», это означает, что ключи, используемые ssh(хранящиеся в таких файлах, как ~/.ssh/id_rsa, ~/.ssh/id_dsaи т. Д.), Либо отсутствуют, либо неизвестны ssh-agent, кто является агентом аутентификации, или что их разрешения установлены неправильно (например, мировой доступный для записи).

Если ваши ключи отсутствуют или вы их еще не сгенерировали, используйте ssh-keygen -t rsa, затем, ssh-addчтобы добавить их.

Если ключи существуют, но не известны ssh-agent(например, если они находятся в нестандартной папке), используйте ssh-add /path/to/my-non-standard-ssh-folder/id_rsaдля их добавления.

Смотрите этот ответ, если у вас возникли проблемы с ssh-addили  ssh-agent.


4
Спасибо @Doedoe за ссылку на хороший и короткий ответ. А для тех, у кого есть ключи (то есть несколько учетных записей Git), вам, возможно, придется использовать их ssh-add /path/to/keyXдля каждого, особенно если они имеют нестандартные имена. Подробности здесь: stackoverflow.com/questions/3225862/… (хороший ответ)
tuk0z

Спасибо за это. Я застрял здесь ... но я понял, что мне нужно ssh-add снова запустить после разрешения части разрешения проблемы. После этого ssh -vT git@github.comне сработало. Мне нужно было добавить абсолютный путь, как указано выше. Тогда все было подливкой.
jungledev

2
Во втором случае я забыл фразу , и я выздоровел его с помощью help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

попробуй это:

ssh-add ~/.ssh/id_rsa

работал на меня


5
Привет, добро пожаловать в ТАК. Пожалуйста, объясните ваш код, чтобы ваши коллеги могли понять, что происходит. Приветствия.
Ктулху

4
Когда вы перезагружаетесь, ваши ключи исчезают, и вам нужно «ssh-добавить» их снова.
Louwki

@Louwki Да ... это очень раздражает. Вы знаете способ обойти это?
Крис Сирфице

3
@ChrisCirefice просто выполните ssh-add с параметром, чтобы добавить их в цепочку ключей навсегда. ssh-add -K ~ / .ssh / [ваш личный ключ]
Louwki

1
В моем случае права доступа к файлу были неправильными для закрытого ключа. Исправлено chmod 600 ~/.ssh/id_rsa, а затемssh-add ~/.ssh/id_rsa
Мортеза Зия

39

ОТВЕТ 2019 г. на macOS Сьерра и Хай Сьерра и Каталина:

PS: большинство других ответов помогут вам создать новый ключ ssh ... но вам не нужно этого делать :)

Как подробно описано на https://openradar.appspot.com/27348363 , macOS / OS X до Yosemite использовался для запоминания ключей SSH, добавленных командойssh-add -K <key>

Итак, вот 4 шага, которые я должен был сделать, чтобы он заработал:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: добавить следующее в~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: убедитесь, что удалили все записи gitconfig, которые используют помощник osxkeychain:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: перезагрузите терминал, чтобы он вступил в силу.


3
Отличный ответ, я собирался упомянуть об этом сам! По-видимому, OS X 10.12.2 и более поздние версии не загружают автоматически идентификаторы в ssh-agent (что я лично считаю действительно глупым решением для удобства использования, но я понимаю последствия для безопасности). Итак, вам нужно изменить конфигурацию SSH, чтобы загрузить их вручную. Я просто хотел бы, чтобы вывод ошибок лучше приводил к решению, а не часу поиска в интернете.
Крис Сирфице

12

Я застрял некоторое время на той же проблеме, которую я в конце концов решил.

Моя проблема : я не мог выполнить любой толчок. Я мог проверить и увидеть мой пульт (используя git remote -v), но когда я выполнил git push origin master, он вернулся: Permission denied (publickey). fatal: Could not read from remote repository.и так.

Как я это решил:

  • Я сгенерировал ключ, используя ssh-keygen -t rsa. Ввод имени для файла ключа (когда его спросили) был бесполезен.
  • Затем я мог бы добавить ключ (для git) :, ssh-add /Users/federico/.ssh/id_rsaкоторый успешно вернулсяIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Я добавил ключ SSH в github, используя эту страницу помощи .
  • Перепробовав все команды на странице справки Github 'Permission denied publickey', только ssh-add -lкоманда сработала / казалась полезной (после выполнения предыдущих шагов), она успешно вернула мой ключ. Последний шаг показывает, где проверить ваш открытый ключ на странице GitHub. И эта команда поможет вам проверить все ключи: ls -al ~/.ssh.

Тогда команда толчка в конце концов сработала!

Я надеюсь, это поможет ! Удачи всем.


7

Запустите следующие команды:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Перейдите в свою учетную запись Github: https://github.com/settings/profile

1) Нажмите: SSH и GPG ключи

2) Новый ключ SSH и прошёл его там

3) Добавить ключ SSH

Готово!


Да - если вы прошли другие этапы создания файла id_rsa.pub, скопируйте и вставьте эту строку pbcopy, которая копирует ключ в буфер обмена и следуйте инструкциям @zouhair - github должен знать ваш ключ. Особенно, если вы используете 2FA.
Давидринн

Я немного сбит с толку, потому что текущие документы говорят, что git создает github_rsa / github_rsa.pub. У меня есть оба в моем / .ssh каталоге, и все же я не могу "получить разрешение". Я создал копии в том же каталоге, используя id_rsa безрезультатно.
Марк Лёве

6

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

cd ~/.ssh

теперь в ssh
вы можете найти все ваши ssh-ключи / файлы, относящиеся ко всем вашим проектам. Теперь введите следующую команду, чтобы показать, доступен ли какой-либо ssh-ключ.

ls

это покажет вам все доступные SSH, в моем случае их было два
, вам нужно запустить агент, чтобы добавить в него SSH. Для этого типа следующая команда

eval "$(ssh-agent -s)"

теперь последнее, но не менее важное: вы добавите ssh в этот тип агента, выполнив следующую команду

ssh-add ~/.ssh/your-ssh

замещать

замените ваш ssh на имя вашего ssh файла, которое вы получили во втором шаге списка ls command


5

Это может вызвать для любого нового терминала, идентификатор агента отличается. Вам необходимо добавить закрытый ключ для агента

$ ssh-add <path to your private key>

1

Еще один элемент, который я понял, это то, что обычно папка .ssh создается в вашей корневой папке в Mac OS X / Users /. Если вы попытаетесь использовать ssh -vT git@github.com из другой папки, это выдаст вам ошибку, даже если вы добавили правильный ключ.

Вам необходимо снова добавить ключ (ssh-add 'правильный путь к id_rsa') из текущей папки для успешной аутентификации (при условии, что вы уже загрузили ключ в свой профиль в Git)


1

Это сработало для меня:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Затем введите это: ssh-add ~/.ssh/id_rsa


Я не думаю, что вопрос о ~/.sshразрешениях. Тем не менее, вы можете значительно улучшить свой ответ, добавив полную команду (здесь chmod) и объяснив, что это делает и зачем это нужно.
Роберт

0

После долгих попыток я наконец смог решить эту проблему в Windows. Для меня переменная User env GIT_SSH была установлена ​​так, чтобы указывать на

"C: \ Program Files (x86) \ WinScp \ PuTTY \ plink.exe"

который был установлен вместе с WinScp. Я изменил указание, чтобы использовать ssh.exe по умолчанию, который поставляется с git-scm "C: \ Program Files \ Git \ usr \ bin \ ssh.exe"


0

Шаги для BitBucket:

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

ssh-keygen -t rsa 

Скопируйте открытый ключ в буфер обмена:

clip < ~/.ssh/id_rsa.pub

Войдите в Bit Bucket: перейдите в «Просмотр профиля» -> «Настройки» -> «SSH Keys» (на вкладке «Безопасность»). Нажмите «Добавить ключ», вставьте ключ в поле и добавьте описательный заголовок.

Вернитесь к Git Bash:

ssh-add -l

Вы должны получить:

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

Сейчас: git pullдолжно работать


0

У меня была эта проблема после восстановления жесткого диска из резервной копии.

Моя проблема: я мог проверить и увидеть свой пульт (используя git remote -v), но когда я запустил мастер git push origin, он вернул: Permission denied (publickey). Неустранимый: Не удалось прочитать из удаленного хранилища.

У меня уже была папка SSH и ключи SSH, и добавление их через Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) успешно добавило мою личность, но я все еще не мог нажать и все еще получал ту же ошибку. Создание нового ключа было для меня плохой идеей, поскольку оно было связано с другими очень безопасными разрешениями в AWS.

Оказалось, что связь между ключом и моим профилем Github разорвана.

Решение: Повторное добавление ключа в Github в «Профиле»> «Настройки»> «Ключи SSH и GPG» решило проблему.

Также: в моем аккаунте настроена двухфакторная аутентификация. В этом случае, если Терминал запрашивает учетные данные, используйте ваше имя пользователя, но НЕ пароль Github. Для двухфакторной аутентификации вам нужно использовать свой код аутентификации (для меня он был сгенерирован Authy на моем телефоне, и мне пришлось скопировать его в терминал для pw).

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