Вопрос или проблема
Я настроил сервер AlmaLinux9 с SSHD. Я также сгенерировал закрытый и открытый ключи на своем рабочем месте, и когда я проверяю алгоритм, использованный моим ключом, он показывает:
ssh-keygen -l -f myprivatekey.pem
2048 SHA256:p8qjW7xUG6CrB7I0edKIGoQarzHtTgqoHf7I32S7LcE testkey (RSA)
Когда я использую этот ключ для входа с другого рабочего места AlmaLinux 9 на сервер, я успешно вхожу. Когда я пытаюсь использовать этот же ключ через putty на клиенте Windows, клиент говорит “Сервер отклонил наш ключ”, и в безопасном журнале сервера показывается:
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
Какой именно алгоритм использует ssh-rsa? Если алгоритм моего ключа – SHA256, который я думаю это rsa-sha2-256 (что является современным и безопасным алгоритмом), почему сервер жалуется на “ssh-rsa”. Я предполагаю, что putty использует отдельный алгоритм для сессии, и настройки моего putty показывают:
Этот пост объясняет, что putty использует отдельный алгоритм для сессии, но где я могу увидеть, какой алгоритм он использует? Я думаю, что мой скриншот из putty настройки > дополнительные параметры > настройки ssh > шифрование показывает допустимые алгоритмы, но я не вижу ссылки на ssh-rsa. Так почему putty использует ssh-rsa?
На случай, если это имеет значение, я использую “extraPUTTY v0.30”
Ответ или решение
Для того чтобы понять, почему у вас возникает ошибка "Server refused our key" при использовании PuTTY для SSH-подключения к серверу AlmaLinux 9, давайте разберем несколько ключевых аспектов, связанных с алгоритмами шифрования и автентификации, которые применяются в SSH.
-
Тип ключа: Вы создаете RSA-ключ с использованием команды
ssh-keygen
, и ваш публичный ключ отображается какssh-rsa
. При этом SHA256 указывает на тип хеширования для проверки подписи, а не на сам алгоритм шифрования, используемый при аутентификации. Включениеrsa-sha2-256
иrsa-sha2-512
позволяет вам использовать более современные и безопасные алгоритмы для аутентификации, однако ваша ошибка связана с тем, что сервер не принимает ваш старыйssh-rsa
. -
Настройки сервера: Ваша ошибка "key type ssh-rsa not in PubkeyAcceptedAlgorithms" указывает на то, что сервер, вероятно, настроен отказать в использовании устаревшего алгоритма
ssh-rsa
для аутентификации. Для повышения безопасности многие современные серверы теперь по умолчанию не принимаютssh-rsa
из-за его уязвимости к атакам. Вам нужно убедиться, что в настройках вашего сервера SSH (обычно файл/etc/ssh/sshd_config
) установлено следующее:PubkeyAcceptedAlgorithms +ssh-rsa
Или:
PubkeyAcceptedAlgorithms +rsa-sha2-256,rsa-sha2-512,ssh-rsa
После внесения изменений не забудьте перезапустить SSH-сервер:
sudo systemctl restart sshd
-
Настройки PuTTY: PuTTY использует другой процесс для аутентификации при подключении. По умолчанию PuTTY не выставляет
ssh-rsa
как разрешенный алгоритм в своих настройках. Вы можете проверить настройки в PuTTY, перейдя кConnection > SSH > Encryption
, и сравнить их. Возможно, у вас нет необходимых алгоритмов в списке, поэтому единственный способ – это обновить PuTTY до последней версии или попробовать другой клиент SSH, как Bitvise или MobaXterm. -
Использование ключа в PuTTY: PuTTY не использует приватный ключ в формате PEM, который вы сгенерировали с помощью
ssh-keygen
. Вам нужно будет конвертировать его в формат, который поддерживает PuTTY. Для этого в комплекте с PuTTY поставляется утилитаPuTTYgen
, с помощью которой вы можете импортировать ваш приватный ключ и сохранить его в формате PPK. После этого используйте PPK-файл в настройках PuTTY для подключения. -
Обновление ключей: Если возможны проблемы с совместимостью алгоритмов, рассмотрите возможность генерации нового SSH-ключа с учетом поддерживаемых алгоритмов. Для этого используйте следующую команду:
ssh-keygen -t ed25519 -C "your_email@example.com"
Этот ключ более новый и имеет лучший уровень безопасности.
Следуя этим шагам, вы сможете устранить проблему с аутентификацией вашего ключа на сервере. Если возникнут дополнительные трудности, не стесняйтесь задавать вопросы.