Не удалась аутентификация SSH с помощью открытого ключа для пользователя root с ошибкой отладки 51 на AlmaLinux 9.

Вопрос или проблема

Я пытаюсь подключиться к удаленному 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, и вывод отладки указывает на проблему с аутентификацией.

Вот шаги, которые вы должны пройти, чтобы решить данную проблему:

  1. Проверка соответствия ключей:
    Вы правильно заметили, что необходимо проверить соответствие ваших публичного и приватного ключей. Выполните на клиенте следующую команду:

    ssh-keygen -y -e -f myprivatekey.pem

    Сравните вывод с содержимым вашего файла публичного ключа (например, mypublickey.pub). Если они не совпадают, это значит, что ваши ключи не соответствуют друг другу.

  2. Создание новых ключей:
    Если вы обнаружили, что ключи не совпадают, вам необходимо создать новую пару ключей. Это можно сделать следующим образом:

    ssh-keygen -t rsa -b 4096 -f ~/.ssh/mykey.pem

    Не забудьте добавить новый публичный ключ на сервер в файл ~/.ssh/authorized_keys для пользователя root. Это можно сделать с помощью команды:

    ssh-copy-id -i ~/.ssh/mykey.pem.pub root@remotehost1
  3. Проверка конфигурации SSH на сервере:
    Убедитесь, что следующие параметры настроены правильно в файле конфигурации SSH-сервера (/etc/ssh/sshd_config):

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
  4. Проверка прав доступа:
    Проверьте права доступа к файлам и директориям, как для клиента, так и для сервера:

    • Убедитесь, что приватный ключ имеет разрешения 600:
      chmod 600 ~/.ssh/mykey.pem
    • Убедитесь, что директория .ssh имеет разрешения 700:
      chmod 700 ~/.ssh
    • Файл authorized_keys также должен иметь права 600:
      chmod 600 ~/.ssh/authorized_keys
  5. SELinux:
    Так как вы уже проверили контекст SELinux (что вы сделали правильно), убедитесь, что он установлен корректно. Также попробуйте временно отключить SELinux, чтобы проверить, не является ли он причиной проблемы:

    setenforce 0
  6. Перезапуск службы SSH:
    После внесения изменений не забудьте перезапустить SSH-сервер:

    systemctl restart sshd

Следуя этим шагам, вы сможете устранить проблемы с аутентификацией по публичным ключам для пользователя root. Если все сделано правильно, вы сможете подключиться к серверу без необходимости ввода пароля.

Если проблема продолжает возникать, пожалуйста, предоставьте дополнительную информацию о настройках и логах, чтобы можно было глубже исследовать проблему.


Надеюсь, эта информация будет полезной, и вы сможете успешно решить вашу проблему!

Оцените материал
Добавить комментарий

Капча загружается...