Linux

/
/
Запрашивается пароль при подключении по SSH-ключу

Запрашивается пароль при подключении по 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