У дозволі Github відмовлено: агент ssh add не має посвідчень


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)"повертає "Агент 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 за посилання на приємну та коротку відповідь. А для тих, хто має keyS (тобто кілька облікових записів 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
Привіт, ласкаво просимо до SO. Поясніть свій код, щоб ваші колеги могли зрозуміти, що відбувається. Ура.
Cthulhu

4
Після перезавантаження ваших ключів немає, і вам доведеться їх знову "додати".
Louwki

@Louwki Так ... це дуже прикро. Чи знаєте ви спосіб цього?
Кріс Сірефіс

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

1
У моєму випадку дозволи для файлів були невірними для приватного ключа. Виправлено chmod 600 ~/.ssh/id_rsa, тодіssh-add ~/.ssh/id_rsa
Morteza Ziyae

39

ВІДПОВІД 2019 для macOS Sierra & High Sierra & Catalina:

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-агент (що я особисто вважаю дійсно дурним рішенням щодо зручності використання, але я розумію наслідки для безпеки). Отже, вам потрібно змінити конфігурацію SSH, щоб завантажити їх вручну. Я просто хочу, щоб виведення помилок краще спричинило рішення, а не годину пошуку в Інтернеті.
Chris Cirefice

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 "Дозвіл відхилено publickey", лише ssh-add -lкоманда працювала / здавалася корисною (після виконання попередніх кроків), вона успішно повернула мій ключ. Останній крок показує вам, де слід перевірити ваш відкритий ключ на сторінці GitHub. І ця команда допоможе вам перевірити всі ключі: ls -al ~/.ssh.

Тоді команда push зрештою спрацювала!

Сподіваюся, це допоможе! Успіхів усім.


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.
davidrynn

Я трохи розгублений, оскільки поточні документи кажуть, що 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, для мене змінна користувача env GIT_SSH була вказана на

"C: \ програмні файли (x86) \ WinScp \ PuTTY \ plink.exe"

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


0

Крок для BitBucket:

якщо ви не хочете генерувати новий ключ, SKIP ssh-keygen

ssh-keygen -t rsa 

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

clip < ~/.ssh/id_rsa.pub

Увійдіть до біт-відра: перейдіть до перегляду профілю -> Налаштування -> SSH-ключі (на вкладці Безпека) Клацніть Додати ключ, вставте ключ у поле, додайте описовий заголовок

Поверніться до 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, він повернувся: у дозволі відмовлено (publickey). fatal: Не вдалося прочитати з віддаленого сховища.

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

Виявилося, зв’язок між ключем і моїм профілем Github розірвався.

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

Також: У моєму обліковому записі була налаштована двофакторна аутентифікація. У такому випадку, якщо Terminal запитує облікові дані, використовуйте своє ім’я користувача, але НЕ свій пароль Github. Для двофакторної аутентифікації вам потрібно використовувати свій код автентифікації (для мене це було створено Authy на моєму телефоні, і мені довелося скопіювати його в Terminal для pw).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.