Запрашивается пароль при подключении по SSH-ключу
Симптомы
При попытки подключиться к серверу по SSH с помощью SSH-ключа, подключение прерывается запросом пароля.
Причины
- Некорректная конфигурация sshd
- Неправильный формат ключа
- Неправильные права на файл
authorized_keys
Решение
Проверка конфигурации sshd
Проверьте настройки SSH на сервере в файле /etc/ssh/sshd_config
. Убедитесь, что следующие строки не закомментированы и установлены в нужные значения:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
После потребуется перезапустить службу sshd:
sudo systemctl restart sshd
Перезапуск службы sshd, в случае некорректной настройки, может вызвать потерю доступа к серверу.
Перед перезапуском службы, убедитесь в наличии альтернативного доступа к серверу, например через интерфейс на стороне хостинг-провайдера.
Проверка формата SSH-ключа
Убедитесь, что ваш публичный ключ в файле по пути ~/.ssh/authorized_keys
соответствует одному из форматов, указанных ниже.
Ключ может содержать дополнительные префиксы!
SSH-RSA
Ключ формата SSH-RSA выглядит следующим образом:
ssh-rsa AAAAB3NzaC1yc...2EAAAABIwAAAQEAr ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА
Это один из самых распространенных форматов ключей, основанный на алгоритме RSA. Такие ключи могут быть длиной от 2048 до 4096 бит.
SSH-DSS
Ключ формата SSH-DSS выглядит следующим образом:
ssh-dss AAAAB3NzaC1yc...2EAAAABIwAAAQEAr ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА
Формат основан на алгоритме DSA и из-за ограничений по длине ключа (до 1024 бит) и проблем с безопасностью, его использование стало менее распространенным.
ECDSA-SHA2-NISTP
Ключ формата ECDSA-SHA2-NISTP выглядит следующим образом:
ecdsa-sha2-nistp256 AAAAB3NzaC1yc...2EAAAABIwAAAQEAr ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА
Форматы ECDSA-SHA2-NISTP256, ECDSA-SHA2-NISTP384 и ECDSA-SHA2-NISTP512 используют алгоритм ECDSA и обеспечивают высокую безопасность при меньшем размере ключа по сравнению с RSA.
Проверка прав на файл authorized_keys
Убедитесь, что файл по пути ~/.ssh/authorized_keys
имеет права 600
:
ls -lah ~/.ssh/authorized_keys
-rw------- 1 root root 2.4K Nov 27 18:00 /root/.ssh/authorized_keys
Если права некорректные, измените их с помощью команды:
chmod 600 ~/.ssh/authorized_keys
Также проверьте права на директорию ~/.ssh/
- она должна иметь права 700
:
ls -lah ~/.ssh
drwx------ 2 root root 4.0K Nov 27 18:00
Если права некорректные, измените их командой:
chmod 700 ~/.ssh