Почему мы получаем ошибку “sshd: ssh-rsa algorithm is disabled”?
Исследовав эту ошибку, мы узнали, что она связана с недавними обновлениями OpenSSH, в которых было отказано в использовании алгоритма подписи ssh-rsa из-за проблем с безопасностью, связанных с хэш-алгоритмом SHA-1, на который опирается ssh-rsa.
Было установлено, что SHA-1 уязвим к атакам на коллизии, что делает его менее безопасным по сравнению с более современными алгоритмами.
OpenSSH официально объявил об отказе от алгоритма ssh-rsa в примечаниях к выпуску, начиная с версии 8.2.
Официальные примечания к выпуску OpenSSH содержат подробную информацию об этом изменении.
В этом руководстве мы рассмотрим различные методы выхода из этой ситуации, вы можете выбрать подходящий метод, исходя из ваших требований к безопасности.
Решение 1: Выберите альтернативу ключу ssh-rsa
Для обеспечения безопасности SSH-соединений рекомендуется использовать более современные алгоритмы, не опирающиеся на SHA-1.
К таким альтернативам относятся rsa-sha2-256 и rsa-sha2-512.
Вот пример того, как можно сгенерировать новый ключ, используя более безопасный алгоритм:
Мы уже публиковали подробное руководство по использованию ssh-keygen, которое вы можете посмотреть для получения дополнительной информации.
🖧 30+ вопросов и ответов на интервью по SSH
После того, как вы сгенерировали новые ключи на вашем SSH-клиенте, вы можете использовать ssh-copy-id для копирования открытого ключа на удаленный SSH-сервер.
Решение 2: Разрешить использование ключа ssh-rsa
Если вы решили проигнорировать рекомендации по безопасности и предпочитаете использовать ключ ssh-rsa, то вам необходимо явно разрешить это в файле /etc/ssh/sshd_config вашего SSH-сервера.
Добавьте следующие строки в файл /etc/ssh/sshd_config, чтобы явно разрешить алгоритм ssh-rsa в PubkeyAcceptedAlgorithms, HostKeyAlgorithms и PubkeyAcceptedKeyTypes.
PubkeyAcceptedAlgorithms +ssh-rsa HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
После внесения изменений перезапустите службу SSH:
Решение 3: Проверьте наличие общесистемных криптографических политик
В некоторых системах, например CentOS или RHEL, могут применяться общесистемные криптографические политики, которые могут отменять настройки SSH.
Эти политики определяют, какие криптографические алгоритмы и протоколы разрешены или запрещены для различных приложений и служб в системе.
При необходимости вы можете проверить и изменить эти политики.
Проверьте текущие криптографические политики:
Доступны следующие основные политики:
- DEFAULT: системная политика по умолчанию. Она обеспечивает хороший баланс между безопасностью и совместимостью, отключая слабые алгоритмы и протоколы.
- LEGACY: менее строгая политика, позволяющая использовать старые, устаревшие криптографические алгоритмы и протоколы по соображениям совместимости.
- FUTURE: более строгая политика, которая принуждает к использованию более сильных криптографических алгоритмов и протоколов, возможно, в ущерб совместимости.
- FIPS: Политика, обеспечивающая соответствие Федеральному стандарту обработки информации (FIPS) 140-2, используемому в правительственных системах США. Эта политика очень строгая и допускает только одобренные FIPS алгоритмы и протоколы.
Если для политики установлено значение FIPS или DEFAULT, вам может понадобиться установить значение LEGACY, чтобы разрешить более старые алгоритмы:
Политика LEGACY позволяет использовать устаревшие криптографические алгоритмы и протоколы, которые могут требоваться устаревшим приложениям или системам.
Это может быть полезно, если вы работаете со старыми ключами SSH, конфигурациями SSL/TLS или другими криптографическими инструментами, которые не поддерживают современные алгоритмы.
Однако следует помнить, что использование старых, менее безопасных алгоритмов может подвергнуть вашу систему уязвимостям, которые были устранены в новых алгоритмах.
Эти старые алгоритмы могут быть восприимчивы к известным атакам, таким как атаки на коллизии SHA-1 или уязвимости в старых версиях SSL/TLS.
Затем перезапустите службу SSHD:
см. также:
- 🐧 LFCA: основные советы по безопасности для защиты системы Linux
- 🔐 Как найти открытый ключ SSH
- 🔐 Настройка входа по SSH без пароля для нескольких удаленных серверов с помощью скрипта
- 🔐 Как определить, какой ключ был использован для входа в систему с OpenSSH
- 🔏 Обновите ваши ключи SSH!
- 🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux