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

Чаще всего это всплывает в самый неудобный момент: нужно срочно выложить правку, а git pull или CI/CD падает с Permission denied.

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

Почему возникает проблема

Проблема может быть в правах 600/700 на .ssh, неправильном владельце файла, не том пользователе, отсутствующем deploy key в GitHub/GitLab, изменившемся host key или старом формате ключа.

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

  • под каким пользователем запускается деплой
  • права на ~/.ssh и authorized_keys
  • какой remote URL использует Git
  • есть ли ключ в deploy keys репозитория
  • что показывает ssh -v при подключении

Как я подхожу к исправлению

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

  • исправляю владельца и права .ssh
  • проверяю привязку ключа к репозиторию
  • обновляю known_hosts безопасно
  • настраиваю ssh config при нескольких ключах
  • тестирую git pull или pipeline

Что подготовить перед работой

  • сервер и пользователь деплоя
  • ошибку из консоли или CI
  • адрес репозитория
  • где хранится ключ
  • как запускается деплой: вручную, cron, CI/CD

Какой результат нужен

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

Чего лучше не делать

Не кладите приватный ключ в публичный репозиторий и не ставьте права 777 на .ssh. Это не решение, а риск.

FAQ

Почему от root работает, а из CI нет?

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

Что значит Permission denied publickey?

Сервер или Git-сервис не принял ключ для текущего пользователя.

Можно использовать один ключ на все проекты?

Лучше разделять ключи по проектам и правам.

Нужно ли хранить ключ с паролем?

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

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот или лог ошибки, и я подскажу, с чего безопасно начать исправление.

Итог

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