Сообщение об ошибке GitHub - запрещен отказ (publickey)

Кто-нибудь видел эту ошибку и знал, что делать?

Я использую терминал, я в корне, репозиторий GitHub существует, и я не знаю, что делать сейчас.

> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Ответ 1

GitHub не может аутентифицировать вас. Таким образом, либо вы не настроитесь на SSH-ключ, потому что у вас нет установить его на своем компьютере, либо ваш ключ не связан с вашей учетной записью GitHub.

Вы также можете использовать URL-адрес HTTPS вместо URL-адреса SSH/ git, чтобы избежать необходимости обращаться к ключам SSH. Это рекомендуемый метод GitHub.

Кроме того, GitHub имеет справочную страницу специально для этого сообщения об ошибке и более подробно объясняет все, что вы могли проверить.

Ответ 2

Вам нужно сгенерировать SSH-ключ (если у вас его нет) и связать открытый ключ с вашей учетной записью Github. См. документацию Github.

Ответ 3

Создал ли файл config в каталоге ~/.ssh? Он должен иметь следующее содержимое:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

Предполагая, что вы создали ключ ssh с именем github_rsa

и загрузили его в GitHub...

ПРИМЕЧАНИЕ. Вы должны следовать этому способу явной конфигурации, если в вашем каталоге ~/.ssh/имеется более 1 ключа (2 и более). Если вы не укажете ключ таким образом, тогда первый ключ в порядке берется и используется для аутентификации github, поэтому он зависит от имени файла ключа.

Ответ 4

Это случилось со мной. По какой-то причине мое происхождение перепуталось без моего осознания этого:

Проверьте правильность настроек.

git remote -v

url должен быть чем-то вроде ssh://git @github.com/YourDirectory/YourProject.git; если вы не видите git @github.com, используйте

git remote set-url origin git://github.com/YourDirectory/YourProject.git

чтобы установить его правильно. Или вы можете использовать приложение github для проверки и установки URL-адреса первичного удаленного репозитория на панели настроек вашего конкретного репозитория.

Ответ 5

Во-первых, нам нужно проверить существующие ключи ssh на вашем компьютере. Откройте терминал и запустите:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

и в нем будут перечислены файлы в каталоге .ssh

И, наконец, в зависимости от того, что вы видите (в моем случае было):

 github_rsa  github_rsa.pub known_hosts

Просто попробуйте настроить свой RSA и, надеюсь, это решит ваши проблемы git push origin "

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

ПРИМЕЧАНИЕ.. Сертификаты RSA сгруппированы в пары, поэтому у вас будет закрытый и общедоступный сертификат. Частный доступ не будет доступен вам, поскольку он принадлежит github (в данном случае), но публикация тот, который может отсутствовать при возникновении этой ошибки (по крайней мере, это было мое дело, моя учетная запись github или репо каким-то образом перепутались, и мне пришлось "связать" открытый ключ, ранее сгенерированный)

Ответ 6

Я знаю эту проблему. После добавления ключа ssh добавьте ключ ssh к агенту ssh тоже (из официальных документов https://help.github.com/articles/generating-ssh-keys/)

ssh-agent -s
ssh-add ~/.ssh/id_rsa

После этого все работает нормально, git может просматривать правильный ключ, прежде чем coudn't.

Ответ 7

Предполагая, что вы подключаете GitHub через SSH, вы можете выполнить команду ниже, чтобы подтвердить это.

$git config --get remote.origin.url

Если вы получаете результат, имеет следующий формат git @github.com: xxx/xxx.github.com.git, то вы должны сделать следующее.

Создайте ключ SSH (или используйте существующий). если у вас его есть, вам просто нужно добавить свой ключ к ssh-agent (шаг 2) и вашей учетной записи GitHub (шаг 3).

ниже для тех, у кого нет ключа SSH.

Шаг 1 Создание пары ключей public/private rsa.

$ssh-keygen -t rsa -b 4096 -C "[email protected]"

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

Шаг 2 Добавьте свой ключ в ssh-agent

  • Убедитесь, что ssh-agent включен

    $eval "$(ssh-agent -s)"

  • Добавьте свой SSH-ключ в ssh-agent:

    $ssh-add ~/.ssh/id_rsa

Шаг 3 Добавьте свой SSH-ключ в свою учетную запись

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

Затем добавьте скопированный ключ в GitHub

Перейдите в раздел Настройки SSH (панель личных настроек) → Добавить ключ SSH → заполнить форму (клавиша в вашем буфере обмена просто используйте ctrl + v) → Добавить ключ

После прохождения вышеуказанных шагов вы должны решить проблему разрешения.

Ссылка: Создание ключей SSH.

Ответ 8

Я получал эту ошибку. Оказывается, я только что обновил OSX до Sierra, и мой старый ключ больше не был зарегистрирован.

Сначала я подумал, что это "Обновление до macOS Sierra разломит ваши SSH-ключи и заблокирует вас из ваших собственных серверов"

Но я обошел этот. Оказывается, мне просто пришлось перерегистрировать мой существующий ключ:

ssh-add -K

И введите парольную фразу... done!

Ответ 9

Если вы не обращаетесь к своему собственному репозиторию или не клонируете внутри клонированного репозитория (используя некоторые команды git subodule...):

В домашнем каталоге вашего репозитория:

$ ls -a

1. Откройте ".gitmodules",, и вы найдете что-то вроде этого:

[submodule "XXX"]
    path = XXX
    url = [email protected]:YYY/XXX.git

Измените последнюю строку, которая будет HTTPS репозитория, который вам нужно потянуть:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

Сохранить ".gitmodules" и запустите команду для подмодулей, а ".git" будет обновляться.

2. Откройте ".git", перейдите в файл "config", и вы найдете что-то вроде этого:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = [email protected]:YYY/XXX.git

Измените последнюю строку, которая будет HTTPS репозитория, который вам нужно потянуть:

    url = https://github.com/YYY/XXX.git

Итак, в этом случае главная проблема - просто с URL. HTTPS любого репозитория можно найти сейчас поверх страницы репозитория.

Ответ 10

Убедитесь, что ssh-add -l показывает отпечаток ключа SSH, который присутствует в списке SSH-ключей в вашей учетной записи Github.

Если вывод пуст, но вы знаете, что у вас есть закрытый SSH-ключ, который работает с вашей учетной записью github, запустите ssh-add на этом ключе (найденном в ~/.ssh. По умолчанию он называется id_rsa вероятно, запустите ssh-add id_rsa).

Следуйте этим инструкциям, чтобы создать пару ключей SSH.

Ответ 11

Я использовал github раньше для одного из моих проектов php. При использовании github я использовал ssh вместо https. У меня была машина, настроенная таким образом, и каждый раз, когда я использовал для фиксации и нажимал код, он задавал мне мой пароль ключа rsa.

Через несколько дней я перестал работать над проектом php и забыл пароль rsa. Недавно я начал работать над проектом Java и перешел на битбакет. Поскольку я забыл пароль и не удалось его восстановить Я решил использовать протокол https (рекомендуется) для нового проекта и получил ту же ошибку, заданную в вопросе.

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

  • Отмените эту команду, чтобы сообщить моему git использовать https вместо ssh:

    git config --global url."https://".insteadOf git://
    
  • Удалите любой удаленный, если есть

    git remote rm origin
    
  • Повторите все: от git init до git нажмите, и он будет работать!

PS: Я также не установил ssh с моей машины во время процесса отладки, считая, что удаление этого файла устранит проблему. Да, я знаю!!:)

Ответ 12

Другое решение:

создайте ключи SSH, введите ssh-keygen -t rsa -C "[email protected]". Это создаст файлы id_rsa и id_rsa.pub.

Добавьте id_rsa в список ssh на локальном компьютере: ssh-add ~/.ssh/id_rsa.

После генерации ключей вы получите pubkey, используя:

cat ~/.ssh/id_rsa.pub 

вы получите что-то вроде:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== [email protected]

скопируйте этот ключ (значение) и перейдите к github.com и под этим параметром (ssh и pgp key) добавьте свой открытый ключ.

Ответ 13

вы можете использовать Https url для входа в систему

Я думаю, вы пытаетесь войти в систему с помощью ssh url когда вы говорите git push, если он запрашивает только пароль, считайте, что вы подключаетесь через ssh.better, вы используете http url.

Ответ 14

Я думаю, у меня есть лучший ответ для вас, ваши приложения git читают ваш id_rsa.pub в корневом каталоге пользователя

/home/root/.ssh/id_rsa.pub

Вот почему ваш ключ в /home/your _username/.ssh/id_rsa.pub не может быть прочитан git. Поэтому вам нужно создать ключ в /home/root/.ssh/

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

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

Ответ 15

Я хотел бы добавить некоторые мои выводы:

Если вы используете GitBash, убедитесь, что ключ SSH хранится в ~/.ssh/id_rsa.

По умолчанию GitBash выполняет поиск ~/.ssh/id_rsa в качестве пути по умолчанию для SSH-ключа.

Даже имя файла id_rsa имеет значение. Если вы сохраните свой SSH-ключ в другом имени файла или пути, он выкинет ошибку Permission Denied(publickey).

Ответ 16

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

От терминала, запустите: ssh-add ~/.ssh/id_rsa

Введите системный пароль, и он должен работать.

Ответ 17

Если вы используете интерфейс GitHub для Mac, проверьте настройки, чтобы убедиться, что вы вошли в систему.

Ответ 18

Я получал ту же ошибку во время 'git push'. На стороне клиента у меня было два источника и мастер. Я удалил один, затем он работал нормально.

Ответ 19

Также в ubuntu, хотя в настройках BitBucket уже был введен SSH-ключ, я получил эту проблему. Причина в том, что я пытался сделать следующее:

sudo git push origin master

Не знаю, почему, но он был решен с помощью

git push origin master

Не используется sudo.

Ответ 20

Если вы уже создали SSH-ключ и все еще получаете ошибку, это связано с тем, что вам нужно предоставить права пользователя на чтение и запись в папку, в которую вы клонируете. Для этого sudo chmod 777 <your_folder_name_here>". Конечно, это после того, как вы создали SSH-ключ, и вы все еще получаете эту ошибку. Надеюсь, это поможет будущим пользователям.

Edit

Чтобы добавить к этому использование admin в Windows, если вы используете git bash

Ответ 21

Как только сценарий, когда это произойдет, - это когда вы следуете инструкциям GitHub после создания своего репозитория. Git предложит вам добавить ваш пульт с чем-то вроде этого.

git remote add origin [email protected]:<user>/<project>.git

Замените, что в < > со значениями, относящимися к вашей учетной записи.

Решение заключается в удалении суффикса .git. Добавьте пульт дистанционного управления следующим образом:

git remote add origin [email protected]:<user>/<project>

Ответ 22

Возможно, ваш ssh-agent не включен Вы можете попробовать его

  • Загрузить git

http://git-scm.com/

  • Установите его

  • Включить ssh-agent

C:\Program Files\ Git\cmd

запуск SSH-агент

Ответ 23

Для меня я попробовал это -

eval "$(ssh-agent -s)"

тогда я запускаю

ssh-add ~/.ssh/path-to-the-keyfile

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

ssh-keygen -t rsa -b 4096 -C "[email protected]"

это сгенерирует пару ключей (общедоступный и закрытый).

вы можете сохранить этот ключ в github для более подробной информации Добавление нового ключа SSH в вашу учетную запись GitHub

Я надеюсь, что это поможет другим:)

Ответ 24

Перейдите на панель управления учетной записью GitHub, найдите репозиторий проекта, нажмите вкладку Настройки - в разделе Развернуть ключи, вам придется добавить свой SSH-ключ. Откройте терминал и введите:

cat ~/.ssh/id_rsa.pub | pbcopy 

Это скопирует ключ из файла id_rsa.pub. Так что просто вернитесь на панель управления GitHub, вставьте ее, нажмите Добавить ключ и это.

То же самое относится к учетным записям Bitbucket.

Ответ 25

У меня была аналогичная проблема с @Batman. Однако, поскольку я запускал это под /usr/local/src/projectname, запуск без sudo не был вариантом.

Просто добавьте флаг -E, чтобы создать среду (ваш ~/.ssh/path).

$ sudo -E git clone [email protected]_repo

От человека sudo:

-E, --preserve-env                  Указывает на политику безопасности, которую пользователь хочет предварительно настроить,                  обслуживать их существующие переменные среды. Охрана                  политика может вернуть ошибку, если у пользователя нет разрешений,                  чтобы сохранить окружающую среду.

Ответ 26

У меня было два файла идентификации Github, загруженные в ssh-агент. Мой личный ключ и еще один для клиентского проекта.

Я удалил ключ, вызывающий путаницу:

ssh-add -d id_rsa_github_somekey

Ответ 27

TL;DR

в ~/.ssh/config положить

PubkeyAcceptedKeyTypes=+ssh-dss

Сценарий Если вы используете версию openSSH > 7, например, скажем, на сенсорной панели MacBook Pro это ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

У вас также был старый Mac, у которого изначально был ваш ключ, который вы положили на Github, возможно, что он использует ключ id_dsa. OpenSSH v7 по умолчанию не использует эти ключи DSA (включая этот ssh-dss), но вы можете добавить его обратно, поместив следующий код в свой ~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

Источник, который работал у меня, это информационный бюллетень Gentoo

Теперь вы можете, по крайней мере, использовать GitHub, а затем исправить свои ключи для RSA.

Ответ 28

вы можете попробовать таким образом...

введите описание изображения здесь

введите описание изображения здесь

выберите другие ссылки