GitHub: У дозволі відмовлено (publickey). фатально: віддалений кінець повісив трубку несподівано


197

Я дотримуюся цих інструкцій нижче, щоб завантажити проект.

Глобальна настройка:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

Але я отримую цю помилку:

У дозволі відмовлено (publickey). фатально: віддалений кінець повісив трубку несподівано

Відповіді:


24

Для мене проблемою було виконання клону через sudo.

Якщо ви клонуєтеся до каталогу, де у вас є дозвіл користувача (/ home / user / git), він буде добре працювати.

(Пояснення: Запуск команди як суперрусер не буде працювати з тим самим відкритим ключем, що і команда, що виконує команду користувача. Тому Github відмовився від з'єднання.)

Для цього рішення потрібно вже встановити ключ SSH: https://help.github.com/articles/generating-ssh-keys


1
це рішення виглядає дуже близьким до того, що вже було опубліковано учнем_19
Ерік

125

Мені довелося додати свій відкритий ключ до github. https://help.github.com/articles/generating-ssh-keys


3
У випадку, якщо ви працюєте з машиною Linux, скопіювати вміст файлу id_rsa.pub може бути складно, якщо ви використовуєте emacs або nano. Спробуйте скопіювати текстовий редактор (Блокнот, TextEdit або gedit буде добре). Якщо у вас немає нічого із цього, ви можете використовувати vim.
Гокуль НК

4
@GokulNK Іншою альтернативою є використання xclip, як рекомендує сторінка.
w4etwetewtwet

7
cat ~/.ssh/id_rsa.pubможе бути варіант? : p
torr

ви можете використовувати pbcopy < ~/.ssh/id_rsa.pubв OS X, а потім вставити його ( cmd+v) на сторінку github.
user3648895

28

Так, це проблема відкритого ключа. Я користувач Windows , і сторінка нижче допомагає мені вирішити цю проблему.

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

точніше, це посилання має бути корисним

https://help.github.com/articles/error-permission-denied-publickey


57
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Лікс

28

після створення пари ключів RSA, ви повинні додати її до SSH, використовуючи:

ssh-add ~/.ssh/id_rsa

або де б ви не створили свою пару ключів rsa.


Рятувальник! Ти вдарився цвяхом по голові. Дякую
Таш Пемхіва

Погоджено, важливо спочатку перевірити, чи працює ssh-агент (у документації GitHub є це зробити) та чи доданий ключ у його ключове слово. Щось ще варто перевірити, оскільки це може перешкоджати використанню ключа, навіть якщо він знаходиться в ключі ssh-агента, - це правильний режим доступу до приватного ключа: він повинен бути 0600 (в chmod 600 ~/.ssh/id_rsaосновному).
chikamichi

18

Введіть таку команду, використовуючи своє ім’я користувача та ім’я сховища:

git clone https://github.com/{user name}/{repo name}

в Ubuntu це прекрасно працює.


Я думаю, що протокол https потрібен для безпечного з'єднання, саме тому він працює. Git @ github .. НЕ безпечний для машини.
Тімо

16

Я отримав рішення після тривалого часу в навчальних посібниках.

Я дотримувався підручника github за цим посиланням -> https://help.github.com/articles/error-permission-denied-publickey, і мені вдалося підключитися на кожному кроці. Але коли я намагався git master-origin походження, я отримав цю помилку:

У дозволі відмовлено (publickey). fatal: Не вдалося прочитати з віддаленого сховища.

Переконайтеся, що у вас є правильні права доступу

Ось як я це виправив !! Перейдіть до каталогу проектів за допомогою терміналу і перевірте його

$git remote -v

У вас вийде щось подібне:

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

Якщо ви використовуєте щось інше, то git@github.com , відкрийте конфігураційний файл у каталозі git, ввівши команду:

vi .git/config

І налаштувати лінію

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

Для мене це фактично спрацювало, замінивши git@github.com на <myusername> @ github.com
Eduard Feicho

Команда "git remote -v" - це не та, яку я бачив раніше, і вона виявилася ключовою для розуміння того, чому працює один з моїх репостів, а інший повертає "Відмовлено у дозволі (publickey)", коли я спробував запустити "git ls-remote". Дуже корисний. Дякую.
Кевін

6

У моєму випадку мені довелося налаштувати відкритий ключ для іншого користувача, оскільки я вже мав його для мого основного користувача. як тільки я перемикав користувачів і виконував команди за посиланням вище, я міг без проблем виконати налаштування для свого тестового сервера.


Аналогічна проблема - я ввійшов як root (і не помітив цього), а не як власний користувач, який налаштувався за допомогою SSH. Не вдалося взяти на себе зобов’язання працювати ні за що. Повернення до виправлення вирішеної користувачем проблеми!
Річард Холліс

1
Певна відсутність пояснень, як реально виконати виправлення.
Річард

Мені не треба було це писати, це для тебе Річард! Я використовував свій некореневий обліковий запис. Мені довелося виконати команду з url довідки github ( help.github.com/articles/generating-ssh-keys#platform-linux ) з префіксом sudo.
Dan Power

5

У мене була ця проблема, але жодне з вищезгаданих рішень не спрацювало. Я міг клонувати і витягувати, але не міг штовхнути. Врешті-решт я зрозумів, що проблема urlв моєму .git/config, вона повинна бути:

git@github.com:<username>/<project>

(ні ssh://github.com/<username>/<project>.gitабо https://github.com/<username>/<project>.git).


2
Для з'єднання SSH git@частина - це магія. Так ssh://git@github.com/username/project.gitтакож працює.
єпископ

.git дійсно важливий. Це рішення працює ідеально.
Онур Гекер

5

Зважаючи на те, що жодна з відповідей тут не працювала для мене, я нарешті відстежив свою проблему підключення до Bitbucket (або Github, в цьому випадку не має значення) з ssh -vT git@bitbucket.org.

У моєму випадку збій стався через використання ключа DSA замість RSA, і, очевидно, мій клієнт SSH вже не дозволяє цього.

debug1: Пропуск ключа ssh-dss /c/Users/USER/.ssh/id_dsa для не в PubkeyAcceptedKeyTypes

Рішенням було додати це до .ssh / config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

Це елегантно додає тип ключа ssh-dss до всіх існуючих загальноприйнятих типів відкритого ключа, і після цього було зроблено, що git тепер може не впустити ssh у Bitbucket.


Це було рішення для мене на нестабільній машині Debian у грудні 2015 року. Я обмежив її "Host bitbucket.org", оскільки я вже мав запис для цього, щоб змусити мій вибір особистості.
бітмушер

3

Моя проблема полягала в тому, що я намагався надати своєму ssh ключу СПЕЦИФІЧНЕ ІМ’Я кожного разу, коли я входив ssh-keygenна свій термінал mac.

Я вирішив проблему, просто залишивши ім'я, яке "ssh-keygen" породжує = id_rsa. Ви отримаєте 2 ключі у вашій папці .ssh на mac id_rsa, який є вашим приватним ключем, і the id_rsa.pub, який є вашим відкритим ключем. Потім я скопіював і зберег код id_rsa.pubу налаштуваннях свого облікового запису GitHub, і це було все. Проблема вирішена.


Те саме для мене. Залишивши назву порожньою, вирішено проблему. Дякую.
Берк

Людина, ти зробив мені день! 2 тижні з консоллю через конкретні імена ключів! Дякую!
eilas

Рада, що це допомогло! @eilas
paopao

Причина це працює, тому що в більшості систем по замовчуванням приватних клавіші ( ~/.ssh/id_rsa, ~/.ssh/id_dsaі ~/.ssh/identity) автоматично додаються до агента аутентифікації SSH.
мафо


2

Додавання відкритого ключа - це рішення. Для генерації ssh-ключів: https://help.github.com/articles/generating-ssh-keys має покрокові інструкції.

Однак проблема може зберігатися, якщо ключ не генерується належним чином. Я вважаю, що це також є корисним посиланням: https://help.github.com/articles/error-permission-denied-publickey

У моєму випадку проблема полягала в тому, що я генерував ssh-ключ без використання sudo, але при використанні команд git мені потрібно було використовувати sudo. Цей коментар у вищенаведеному посиланні "Якщо ви генеруєте ключі SSH без sudo, тоді, коли ви намагатиметеся використовувати таку команду, як sudo git push, ви не будете використовувати створений вами ключ SSH." мені допомогли.

Отже, рішенням було те, що мені довелося використовувати sudo як з командами, що генерують ключі, так і з командами git. Або для інших, коли їм ніде не потрібно судо, не використовуйте його в жодному з двох кроків. (генерація ключів та команди git).


1

Я зіткнувся з подібною проблемою під час запуску SSH або Git Clone в Windows. Наступні висновки допомагають вирішити мою проблему:

  • Якщо ви запускаєте «rhc setup» або інші методи ssh для створення ключа ssh, він створить файл приватного ключа id_rsa у папці .ssh у вашій домашній папці, за замовчуванням - C: \ User \ UserID
  • Git для Windows має власну папку .ssh у своєму інсталяційному каталозі. Коли ви запускаєте git / ssh, він шукатиме файл приватного ключа id_rsa в цій папці
  • Вирішили проблему, скопіювавши id_rsa з домашньої папки .ssh у папку .ssh у каталозі встановлення git.

Крім того, я думаю, що існує спосіб "сказати" git використовувати папку .ssh за замовчуванням у домашній папці, але все ж потрібно розібратися, як це зробити.


1

Для мене це спрацювало так:

У GitHub я змінив sshпосилання на https, а потім дав такі команди:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

0

Використовуйте ubuntu в магазині Windows

підсистема Windows для Linux

, ваш git push працюватиме в різних облікових записах.


0

Якщо ви використовуєте машину Linux, перевірте,

  • у вас встановлено Openssh
  • якщо у вас є, то чи є у вас наявний відкритий ключ, інакше доведеться його генерувати.
  • це ваш відкритий ключ, доданий до вашого облікового запису github.

Створення нових ключів SSH та додавання їх до мого облікового запису Github вирішило мою проблему. Ви можете переглянути цю сторінку для отримання більш детальної інформації. GitHelp .


0

Ви можете спробувати змінити тип типу зв'язку на відділення з ssh на https.

  1. nano project_path/.git/config
  2. Замінити git@github.com:username/repository.gitнаhttps://username@github.com/username/repository_name.git
  3. Зберегти файл ctrl+o

Після цього можна спробувати git pullбез publickey




-1

Моя проблема полягала в тому, що вона не працювала із парольною фразою на моєму приватному ключі.

Сподіваюся, що хтось допомагає.



-3

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


-4

У мене була така сама проблема з Windows. Я перейшов з SSH на HTTPS і запустив Git PUSH.

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

Успішно! сподіваюся, що це допомагає.


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