Если 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-деплой должен быть настроен строго: правильный пользователь, права на файлы, понятный ключ, ограниченный доступ и проверяемая команда обновления.