Ошибка: Permission denied (доступ запрещен) /публичный ключ/
Ошибка «Permission denied» (доступ запрещён) означает, что сервер отклонил ваше соединение. У этой ошибки может быть несколько причин; наиболее общие из них приведены ниже.
Можно ли использовать в Git команду sudo
?
Вы не должны использовать команду sudo
с Git. Если у вас есть веская причина использовать sudo
, убедитесь, что вы используете её с каждой командой (возможо, лучше использовать su
чтобы получить оболочку с правами суперпользователя (администратора) в этом месте). Если вы сгенерировали SSH-ключ без sudo
, а затем пытаетесь использовать команду, подобную sudo git push
, вы не должны использовать те же ключи, которые сгенерировали.
Проверьте, что вы подключились к нужному серверу
Будьте внимательны при вводе команд с клавиатуры. В некоторых случаях корпоративная сеть может привести к проблемам разрешения записи DNS.
Так как документ подготовлен в рамках курсов повышения квалификации «Правильный курс» , то и проверка подключения будет описана именно на этом примере.
Напомним, что доступ к репозиторию [email protected] организован по порту 25000, а не по стандартному для SSH порту 22. Поэтому в команде подключения вы должны явно указать номер порта.
Для того, чтобы убедиться в том, что вы подключаетесь к нужному домену, введите следующую команду, добавив в строке номер порта '-p 2500'
:
ssh -vT '-p 25000' [email protected]
OpenSSH_7.1p2, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /с/Users/вы/.ssh/config
debug1: /c/Users/вы/.ssh/config line 1: Applying options for git.propercourse.ru
debug1: Reading configuration data /etc/ssh_config
Connecting to git.propercourse.ru [94.79.52.169] port 25000.
debug1: Connection established.
|
Всегда использовать пользователя «git»
Все соединения длджны выполняться под пользователем «git». Если вы попытаетесь соединиться под вашим псевдонимом в propercourse, соединение не установится:
ssh -T вы@git.propercourse.ru
Permission denied (publickey, password).
|
Вместо этого вы должны проверить соединение, набрав в строке:
ssh -T [email protected]
Welcome to GitLab, пользователь!
|
Убедитесь, что у вас есть ключ, который используется
Если вы используете Git Bash, включите ssh-agent:
# start the ssh-agent in the backgroundeval "$(ssh-agent -s)"Agent pid 59566# start the ssh-agent in the backgroundeval "$(ssh-agent -s)"Agent pid 59566Проверьте, что у вас есть сгенерированный и загруженный в SSH приватный ключ.
Если вы используете OpenSSH 6.7 или более ранний:ssh-add -l2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/вы/.ssh/id_rsa (RSA)ssh-add -l -E md52048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/вы/.ssh/id_rsa (RSA)
Команда ssh-add должна вывести длинную строку из цифр и букв. Если ничего не будет выведено на экран, вы должны сгенерировать новый SSH-ключ и связать его с GitLab.
Замечание. В большинстве систем приватные ключи по умолчанию (~/.ssh/id_rsa , ~/.ssh/id_dsa и ~/.ssh/identity ) автоматически добавляются к агенту аутентификации SSH. Вы не должны запускать ssh-add path/to/key , иначе вы перезапишите имя файла при генерации ключа.
|
Получение детализации
Вы можете также проверить, что ключ используется при попытках соединения с [email protected]
:
ssh -vT '-p 25000' [email protected]
...
debug1: identity file /Users/вы/.ssh/id_rsa type -1
debug1: identity file /Users/вы/.ssh/id_rsa-cert type -1
debug1: identity file /Users/вы/.ssh/id_dsa type -1
debug1: identity file /Users/вы/.ssh/id_dsa-cert type -1
...
debug1: Authentications that can continue: publickey, password
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/you/.ssh/id_rsa
debug1: Trying private key: /Users/you/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
|
В этом примере у нас нет ключей для использования SSH. Значение «-1» в конце строки «identity file» означает, что SSH не может найти файла для использования. Ниже, строка «Trying private key» также показывает, что файл не найден. Если бы файл был найден, значение в этих строках было бы «1», и «Offering public key» соответственно.
ssh -vT '-p 25000' [email protected]
...
debug1: identity file /Users/вы/.ssh/id_rsa type 1
...
debug1: Authentications that can continue: publickey, password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: C:\\Users\\вы\\.ssh\\id_rsa
|
Проверка привязки публичного ключа к вашей учётной записи
Вы должны предоставить ваш публичный ключ GitLab чтобы установить защищённое соединение.
Откройте командную строку.
Запустите SSH-agent в фоновом режиме:
ssh-agent -sAgent pid 59566Найдите и возьмите на заметку отпечаток вашего публичного ключа. Если вы используете OpenSSH 6.7 или более раннюю:
ssh-add -l2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/id_rsa (RSA)ssh-add -l -E md52048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/id_rsa (RSA)Авторизуйтесь в репозитории центра компетенций «Правильный курс» и перейдите на вкладку «Profile settings / SSH Keys».
Сравните список ключей в поле «Your SSH keys» со списком, полученным в результате выполнения команды
ssh-add
.
Если публичные ключи отсутствуют в вашем профиле в GitLab, вам нужно добавить их и ассоциировать с вашим компьютером.
Внимание! Если вы обнаружили незнакомый вам SSH-ключ немедленно удалите его и свяжитесь с поддержкой GitLab. Неопознанный публичный ключ может означать потенциальную проблему в защите. |