Ответ вслух Junior SSH и безопасность обновлено

Не работает вход по ключу

Вопрос

Разработчик говорит: «добавил ключ на сервер, а меня не пускает». Как будешь разбираться?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Начинаю с клиента: ssh -vvv user@host. Видно, какие ключи предлагаются, какой метод сервер принял и на чём остановилось.

Что должно прозвучать в ответе

  • На клиенте `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 ошибок.