Что делать при невозможности подключения по SSH к виртуальной машине при правильных ключах и настройках фаервола
Что проверяют
Умеете ли вы разбирать проблему по слоям вместо перебора наугад. Формулировка про верные ключи и открытый фаервол это подсказка, что причина лежит в другом слое, и интервьюер ждёт, что вы начнёте с вопроса, где именно обрывается соединение.
Как отвечать
Первым делом получить точный симптом: ssh -vvv user@host. Слои различаются по тексту ошибки:
- нет ответа и таймаут: трафик не доходит до порта. Проверяются маршрут, группа безопасности облака, состояние машины, верный ли адрес;
Connection refused: до хоста дошли, демон не слушает или слушает на другом порту;Permission denied (publickey): сеть ни при чём, разбирательство в аутентификации;Host key verification failed: машину пересоздали, отпечаток вknown_hostsстарый.
Для ветки с аутентификацией список короткий: тот ли пользователь (в облачных образах он редко root), лежит ли ключ в ~/.ssh/authorized_keys именно этого пользователя, права на домашний каталог, на ~/.ssh и на сам файл (при включённом StrictModes запись для группы и остальных запрещена), не режут ли вход директивы AllowUsers, AllowGroups или блок Match. Логи на сервере: journalctl -u sshd, либо /var/log/auth.log в дистрибутивах на основе Debian и /var/log/secure в семействе RHEL.
Отдельно назовите две причины, которые выглядят как мистика: диск заполнен на 100%, и сессия рвётся сразу после аутентификации, и автоматическая блокировка вашего адреса сервисом защиты от перебора после нескольких неудачных попыток.
Где спотыкаются
Диагностируют машину с самой машины. Команды проверки службы и фаервола предполагают, что вы уже внутри, а внутрь вы как раз не попали. Точка входа при отказе SSH это консоль провайдера или последовательный порт.
Второе: помнят только про права на приватный ключ у клиента. Серверные права отказывают тише: при доступном для записи группе домашнем каталоге демон молча игнорирует authorized_keys, и клиент видит обычный отказ по ключу.
Третье: забывают про устаревшие алгоритмы. Свежие версии OpenSSH по умолчанию не принимают подпись ssh-rsa на SHA-1, поэтому после обновления сервера старый ключ перестаёт подходить, хотя файлы никто не трогал.