Не работает вход по ключу
Вопрос
Разработчик говорит: «добавил ключ на сервер, а меня не пускает». Как будешь разбираться?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
На клиенте `ssh -vvv`: какой ключ предлагается и что ответил сервер
Правильный ли ключ: `IdentityFile`, `ssh-add -l`, нужный пользователь
На сервере права и владелец `~/.ssh` (700) и `authorized_keys` (600), ключ одной строкой без переносов
Лог sshd: `journalctl -u ssh` или `/var/log/auth.log`
Конфиг sshd: `AllowUsers`, `PubkeyAuthentication`, `AuthorizedKeysFile`
Сетевые причины и fail2ban, если IP уже забанен
Что могут спросить следом
- Что значит
Too many authentication failures? - Как проверить, что ключ в authorized_keys совпадает с локальным?
Разбор
Начинаю с клиента: ssh -vvv user@host. Видно, какие ключи предлагаются, какой метод сервер принял и на чём остановилось. Частая история: клиент предлагает не тот ключ или их слишком много, и сервер рвёт соединение после MaxAuthTries; лечится IdentitiesOnly yes и явным -i. Потом сервер: заходим под другим доступом и смотрим лог sshd, journalctl -u ssh или /var/log/auth.log. Самая частая причина там видна сразу: bad ownership or modes, то есть права на .ssh или authorized_keys слишком открытые или владелец не тот. Ещё проверяю, что ключ записан одной строкой без переносов и лишних пробелов, что он в нужном пользователе, а в sshd_config нет AllowUsers, куда пользователя забыли добавить. Сравнить ключи можно по отпечатку: ssh-keygen -lf. И если были неудачные попытки, проверяю, не забанил ли IP fail2ban.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.