12k
All articles

Исправление ошибки 'Permission denied (publickey)' при отправке в GitHub

Исправление ошибки Permission denied publickey на GitHub требует генерации SSH-ключей, добавления публичного ключа в настройки GitHub и проверки SSH-соединения.

OpenReplay Team
OpenReplay Team
Исправление ошибки 'Permission denied (publickey)' при отправке в GitHub

Получаете ошибку ‘Permission denied (publickey)’ при попытке отправить изменения в GitHub? Эта ошибка означает, что GitHub не может аутентифицировать вас из-за проблемы с SSH-ключом. Давайте быстро это исправим.

Ключевые моменты

  • Ошибка возникает, когда GitHub не может аутентифицировать ваше SSH-соединение
  • Три основные причины: отсутствие SSH-ключей, ключи не добавлены в GitHub или неправильный формат URL удалённого репозитория
  • Проверьте соединение командой ssh -T git@github.com, чтобы убедиться, что проблема решена
  • SSH-агент и конфигурационные файлы помогают управлять несколькими учётными записями или постоянной аутентификацией

Что означает эта ошибка

Ошибка ‘Permission denied (publickey)’ возникает, когда Git пытается подключиться к GitHub через SSH, но аутентификация не проходит. Представьте SSH-ключи как специальный пароль, который позволяет вашему компьютеру безопасно общаться с GitHub.

Это руководство охватывает три основные причины и показывает, как именно исправить каждую из них.

Три основные причины (и способы их устранения)

1. SSH-ключи не созданы на вашем компьютере

Быстрая проверка:

ls -la ~/.ssh

Если вы видите “No such file or directory” или папка пуста, вам нужно создать SSH-ключи.

Решение: Сгенерируйте новую пару SSH-ключей:

ssh-keygen -t ed25519 -C "your-email@example.com"

Нажмите Enter три раза, чтобы принять значения по умолчанию. Это создаст два файла:

  • ~/.ssh/id_ed25519 (приватный ключ — храните его в секрете)
  • ~/.ssh/id_ed25519.pub (публичный ключ — делитесь с GitHub)

2. Публичный ключ не добавлен в GitHub

Даже при наличии созданных SSH-ключей GitHub не распознает вас, пока вы не добавите свой публичный ключ в свою учётную запись.

Решение: Сначала скопируйте свой публичный ключ:

cat ~/.ssh/id_ed25519.pub

Затем добавьте его в GitHub:

  1. Перейдите в настройки SSH на GitHub
  2. Нажмите “New SSH key”
  3. Вставьте ваш ключ и сохраните

3. Неправильный формат URL удалённого репозитория

SSH URL для GitHub должен начинаться с git@github.com: — не с вашего email или имени пользователя.

Проверьте текущий URL:

git remote -v

Правильный формат:

git@github.com:username/repository.git

Неправильные форматы:

youremail@github.com:username/repository.git  ❌
https://github.com/username/repository.git    ❌ (это HTTPS, а не SSH)

Решение: Обновите на правильный SSH URL:

git remote set-url origin git@github.com:username/repository.git

Проверка работоспособности

Протестируйте ваше SSH-соединение с GitHub:

ssh -T git@github.com

Вы должны увидеть:

Hi username! You've successfully authenticated...

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

Распространённые проблемы и их решение

SSH-агент не запущен

Если ваш ключ существует, но всё равно не работает, возможно, SSH-агент не запущен.

Решение:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Несколько учётных записей GitHub

Управление несколькими учётными записями требует конфигурационного файла SSH. Создайте ~/.ssh/config:

Host github.com-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_work

Host github.com-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_personal

Затем клонируйте, используя:

git clone git@github.com-work:company/repository.git

Особенности для разных платформ

  • Пользователи Windows: Используйте Git Bash вместо Command Prompt или PowerShell
  • Пользователи macOS/Linux: Используйте Terminal

Обе платформы используют одинаковые команды, показанные выше.

Заключение

Ошибка ‘Permission denied (publickey)’ раздражает, но легко исправляется. В большинстве случаев вам просто нужно создать SSH-ключи и добавить публичный ключ в GitHub. Не забудьте проверить соединение командой ssh -T git@github.com перед отправкой изменений.

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

Часто задаваемые вопросы

Могу ли я использовать один SSH-ключ для нескольких учётных записей GitHub?

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

Что лучше использовать для GitHub: SSH или HTTPS?

SSH удобнее после настройки, так как не требует паролей при каждой отправке. HTTPS работает везде, но требует токенов аутентификации или паролей для каждой операции.

Мой SSH-ключ защищён парольной фразой. Нужно ли вводить её каждый раз?

Нет. Добавьте ваш ключ в SSH-агент с помощью ssh-add, чтобы кэшировать парольную фразу на время сеанса. Таким образом, вы введёте её только один раз за сеанс.

Что делать, если я случайно поделился своим приватным SSH-ключом?

Немедленно сгенерируйте новую пару ключей и обновите GitHub новым публичным ключом. Удалите скомпрометированный ключ из настроек GitHub и никогда не делитесь приватными ключами.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.