Сообщение об ошибке 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.

30 ответов


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

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

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


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


вы создали config в свой ~/.каталог СШ? Он должен иметь такое содержание:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

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

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

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


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

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

git remote -v

url должен быть чем-то вроде ssh://[email protected]/YourDirectory/YourProject.git; если вы не видите [email protected] используйте

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

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


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

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

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


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

ls -al ~/.ssh

#or

cd ~/.ssh
ls

и это будет список файлов в вашем .СШ каталог

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

 github_rsa  github_rsa.pub known_hosts

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

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

Примечание: сертификаты RSA являются ключами-парными, поэтому у вас будет частный и публичный сертификат, частный не будет доступен для вас, так как он принадлежит github (в этом случае), но публичный-это тот, которого Вам может не хватать, когда происходит эта ошибка (по крайней мере, это был мой случай, моя учетная запись github или РЕПО как-то перепутались, и мне пришлось "связать" открытый ключ, ранее сгенерированный)


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

$git config --get remote.origin.url

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

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

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

шаг 1 создание пары открытого / закрытого ключа 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 ключи!--62-->.


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

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

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

ssh-add -K

и введите пароль... готово!


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

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

$ 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", и run команда для подмодулей, и ".ГИТ" будет обновляться.

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 любого репозитория теперь можно найти поверх страницы репозитория.


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

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

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


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

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

как я ее решал?

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

    git config --global url."https://".insteadOf git://
    
  2. удалить удаленных если

    git remote rm origin
    
  3. переделывать все от git init to git push и это работает!

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


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

/home/root/.ssh/id_rsa.pub

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

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

затем скопируйте ключ в свою учетную запись github. У меня получилось. Можешь попробовать.


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

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

добавить 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 ключ) добавьте свой открытый ключ.


это сработало для меня:

1-удалить все origins

git remote rm origin  

(МФ. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html)

*remote: "управление набором репозиториев ("remotes"), ветви которых вы отслеживаете.

* rm: "удалите удаленный с именем . Удаляются все ветви удаленного отслеживания и параметры конфигурации для удаленного."

2-проверить все удалено :

git remote -v  

3 - Добавить новый origin master

git remote add origin [email protected]:YOUR-GIT/YOUR-REPO.git

Это все люди!


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

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

По Умолчанию GitBash ищет ~/.ssh/id_rsaкак путь по умолчанию для ключа SSH.

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


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

редактировать

чтобы добавить к этому, используйте admin В Windows, Если вы используете Git bash


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

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

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


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


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


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

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


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

sudo git push origin master

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

git push origin master

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


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

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

замените то, что в, значениями, связанными с вашей учетной записью.

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

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


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.


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

  1. скачать git

http://git-scm.com/

  1. установки

  2. включить ssh-agent

C:\Program Files\Git\cmd

start-ssh-agent


Я пробовал это -

eval "$(ssh-agent -s)"

затем я бегу

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

и для генерации ключа можно запустить

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

это создаст пару ключей (Public и private).

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

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


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

cat ~/.ssh/id_rsa.pub | pbcopy 

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

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


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

просто добавить -е флаг для предварительной настройки среды (ваш ~/.ssh / path).

$ sudo -E git clone [email protected]_repo

от человека судо:

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


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

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

ssh-add -d id_rsa_github_somekey


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


использование Https в порядке, запустите git config --global credential.helper wincred чтобы создать помощник учетных данных Github, который хранит ваши учетные данные для вас. Если это не работает, вам нужно отредактировать свой в своем .git каталог и обновите источник до url https.

посмотреть этой ссылке для документов github.