Сообщение об ошибке 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
Шаг 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 не включен
Вы можете попробовать его
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
вы можете попробовать таким образом...
![введите описание изображения здесь]()
![введите описание изображения здесь]()
выберите другие ссылки