Вопрос или проблема
Я пытаюсь подключиться к удаленному SSH серверу под аккаунтом root, используя открытые ключи. Вход не удался, и SSH сообщает:
debug1: Will attempt key: mykey.pem explicit
debug2: pubkey_prepare: done
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[защищенный email],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[защищенный email],[защищенный email]>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
А в журнале ошибок сервера только:
Sep 22 12:13:21 remotehost1 sshd[67019]: Connection closed by authenticating user root 172.31.254.31 port 42192 [preauth]
Ответ ’51’ кажется общим указанием на ошибки с ключом/безопасностью/разрешениями/файлом и т.д. Поэтому вход не удался, и от меня требуется ввести пароль. На клиенте:
- файл закрытого ключа действителен (включая LF в конце)
- закрытый ключ в формате pem
- файл закрытого ключа имеет разрешение 600
- директория .ssh имеет разрешение 700
- файл ключа и директория .ssh принадлежат root:root
На сервере:
-
Конфигурация sshd включает:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
-
Файл authorized_keys имеет разрешение 600
-
Файл authorized_keys имеет LF в конце
-
Я перезапустил службу sshd, чтобы применить изменения
-
Я удостоверился, что контекст selinux правильный для authorized_keys
chcon -t ssh_home_t /root/.ssh/authorized_keys
-
Я перевел selinux в режим разрешений
На всякий случай, sshd работает на AlmaLinux 9.
Я наткнулся на ответ. Закрытые и открытые ключи на КЛИЕНТЕ не совпадали. Запустив
ssh-keygen -y -e -f myprivatekey.pem
и сравнив вывод с mypublickey, я обнаружил разницу. Другим уликой было то, что ssh-copy-id отказался копировать открытый ключ (просто сказал файл не найден). В обоих случаях причиной была несовпадение закрытого и открытого ключа.
Ответ или решение
Конечно! Вот подробный ответ на ваш вопрос о проблемах с аутентификацией по публичным ключам для пользователя root на AlmaLinux 9, сопровождаемый выводом отладки SSH.
Проблема, с которой вы столкнулись, связана с нестыковкой между вашим приватным и публичным ключами. Вы получили сообщение об ошибке, где sshd не смог аутентифицировать пользователя root, и вывод отладки указывает на проблему с аутентификацией.
Вот шаги, которые вы должны пройти, чтобы решить данную проблему:
-
Проверка соответствия ключей:
Вы правильно заметили, что необходимо проверить соответствие ваших публичного и приватного ключей. Выполните на клиенте следующую команду:ssh-keygen -y -e -f myprivatekey.pem
Сравните вывод с содержимым вашего файла публичного ключа (например,
mypublickey.pub
). Если они не совпадают, это значит, что ваши ключи не соответствуют друг другу. -
Создание новых ключей:
Если вы обнаружили, что ключи не совпадают, вам необходимо создать новую пару ключей. Это можно сделать следующим образом:ssh-keygen -t rsa -b 4096 -f ~/.ssh/mykey.pem
Не забудьте добавить новый публичный ключ на сервер в файл
~/.ssh/authorized_keys
для пользователя root. Это можно сделать с помощью команды:ssh-copy-id -i ~/.ssh/mykey.pem.pub root@remotehost1
-
Проверка конфигурации SSH на сервере:
Убедитесь, что следующие параметры настроены правильно в файле конфигурации SSH-сервера (/etc/ssh/sshd_config
):PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
-
Проверка прав доступа:
Проверьте права доступа к файлам и директориям, как для клиента, так и для сервера:- Убедитесь, что приватный ключ имеет разрешения
600
:chmod 600 ~/.ssh/mykey.pem
- Убедитесь, что директория
.ssh
имеет разрешения700
:chmod 700 ~/.ssh
- Файл
authorized_keys
также должен иметь права600
:chmod 600 ~/.ssh/authorized_keys
- Убедитесь, что приватный ключ имеет разрешения
-
SELinux:
Так как вы уже проверили контекст SELinux (что вы сделали правильно), убедитесь, что он установлен корректно. Также попробуйте временно отключить SELinux, чтобы проверить, не является ли он причиной проблемы:setenforce 0
-
Перезапуск службы SSH:
После внесения изменений не забудьте перезапустить SSH-сервер:systemctl restart sshd
Следуя этим шагам, вы сможете устранить проблемы с аутентификацией по публичным ключам для пользователя root. Если все сделано правильно, вы сможете подключиться к серверу без необходимости ввода пароля.
Если проблема продолжает возникать, пожалуйста, предоставьте дополнительную информацию о настройках и логах, чтобы можно было глубже исследовать проблему.
Надеюсь, эта информация будет полезной, и вы сможете успешно решить вашу проблему!