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
это решение кажется очень близким к тому, что уже было опубликовано Learner_19
Erik

125

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


3
В случае, если вы работаете на машине с Linux, копирование содержимого файла id_rsa.pub может быть затруднено, если вы используете emacs или nano. Попробуйте скопировать текстовым редактором (Notepad, 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-agent (в документации GitHub он есть) и добавлен ли ключ в его связку ключей. Однако стоит проверить еще кое-что, поскольку он может помешать использованию ключа, даже если он находится в связке ключей ssh-agent, - это правильный режим доступа к закрытому ключу: он должен быть 0600 (в chmod 600 ~/.ssh/id_rsaосновном).
Чикамичи

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 push -u origin, я получил эту ошибку:

В доступе отказано (publickey). Неустранимый: Не удалось прочитать из удаленного хранилища.

Пожалуйста, убедитесь, что у вас есть правильные права доступа

Вот как я это исправил !! Перейдите в каталог проекта с помощью терминала и проверьте его

$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
Эдуард Фейчо

Команда "git remote -v" - это не та команда, которую я видел раньше, и она оказалась ключом к пониманию того, почему один из моих репозиториев работал, а другой возвращал "Отказано в доступе (publickey)", когда я попробовал запустить "git ls-remote". Очень полезно. Спасибо.
Кевин

6

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


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

1
Определенное отсутствие объяснения того, как на самом деле выполнить исправление.
Ричард

Мне не нужно было об этом говорить, это для тебя, Ричард! Я использовал свою учетную запись без полномочий root. Мне пришлось выполнить команду из справочного URL- адреса github ( help.github.com/articles/generating-ssh-keys#platform-linux ) с префиксом sudo.
Дэн Пауэр

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

3

Моя проблема заключалась в том, что я пытался дать моему ключу ssh УКАЗАТЕЛЬНОЕ ИМЯ каждый раз, когда я входил ssh-keygenв свой терминал Mac.

Я решил проблему, просто оставив имя, которое генерирует "ssh-keygen" = id_rsa. В итоге вы получите 2 ключа в папке .ssh на компьютере Mac id_rsa, который является вашим закрытым ключом, иid_rsa.pub , который является вашим открытым ключом. Затем я скопировал и сохранил код id_rsa.pubв настройках своей учетной записи GitHub, и все. Задача решена.


Мне то же. Оставленное имя пустым решило проблему. Спасибо.
Берк

Человек, ты сделал мой день! 2 недели с консолью из-за конкретных имен ключей! Спасибо!
Эйлас

Рад, что это помогло! @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. Или для других, когда им нигде не нужен sudo, не используйте его ни в одном из двух шагов. (генерация ключей и команды 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 Store

Подсистема 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

Быстрый способ исправить это, если вы используете Mac, - выйти из приложения OSX и снова войти в систему.


-1

Моя проблема заключалась в том, что он не работал с парольной фразой в моем закрытом ключе.

Надеюсь, что это помогает кому-то.



-3

Я пробовал упомянутые решения, но все равно не получилось Я нашел решение , которое , наконец , работал для меня здесь - извлекая затем повторно добавив удаленную ссылку


-4

У меня была такая же проблема на окнах. Я переключился с SSH на HTTPS и запустил Git PUSH.

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

Успешный! надеюсь это поможет.


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