В этой статье мы покажем вам как можно настроить аутентификацию SSH без пароля на основе ключей в RHEL 9.
SSH — это безопасный сетевой протокол, который шифрует трафик между двумя конечными точками. Он позволяет пользователям безопасно подключаться и/или передавать файлы по сети. Расшифровывается SSH от Secure Shell.
SSH в основном используется системными администраторами для безопасного доступа и управления удаленными ресурсами, такими как серверы и сетевые устройства в сети. Он использует надежные методы шифрования, такие как AES и алгоритмы хэширования, такие как SHA-2 и ECDSA, для шифрования трафика, передаваемого между клиентом и удаленной системой.
SSH реализует два метода аутентификации: аутентификацию на основе пароля и аутентификацию с использованием открытого ключа. Последний способ является более предпочтительным, так как он обеспечивает более высокую безопасность, используя аутентификацию с открытым ключом, которая защищает систему от атак методом перебора.
Требование к статье:
- Система Linux/UNIX (на базе Ubuntu или RHEL), на которой мы будем генерировать пару ключей. В данном руководстве я использую дистрибутив Ubuntu.
- Экземпляр RHEL 9 (это облако может быть локальным или облачным VPS).
Шаг 1: Создание пары ключей ECDSA SSH
На этом шаге мы будем генерировать пару ключей с использованием алгоритма ECDSA, который обеспечивает лучшее шифрование и безопасность.
Для генерации пары ключей ECDSA выполните команду:
$ ssh-keygen -t ecdsa
Команда проведет вас через серию подсказок.
По умолчанию пара ключей сохраняется в домашней директории пользователя в каталоге ~/.ssh. Вы можете принять это в качестве места назначения пары ключей SSH, нажав «ENTER». Вы также можете указать желаемый путь. В данном руководстве мы решили выбрать путь по умолчанию.
Далее вам будет предложено ввести кодовую фразу. По сути, это пароль, который вы должны будете ввести при установлении соединения с удаленной системой RHEL 9. Он обеспечивает дополнительный уровень защиты поверх шифрования, обеспечиваемого ключами SSH.
Однако если вы планируете автоматизировать процессы через защиту SSH или настроить аутентификацию без пароля, рекомендуется оставить это поле пустым. Поэтому мы оставим его пустым, еще раз нажав «ENTER».
Ниже приведен результат выполнения команды.
Вы можете просмотреть пару ключей SSH с помощью команды ls, как показано ниже.
$ ls -l ~/.ssh
id_ecdsa — это закрытый ключ, а id_ecdsa.pub — открытый ключ. Закрытый ключ всегда должен оставаться в секрете и не должен никому передаваться или разглашаться. С другой стороны, вы можете поделиться открытым ключом с любой удаленной системой, к которой вы хотите подключиться.
Шаг 2: Копирование открытого ключа SSH на удаленный RHEL 9
Следующим шагом будет копирование открытого ключа на удаленный экземпляр RHEL 9. Вы можете сделать это вручную или с помощью инструмента командной строки ssh-copy-id. Поскольку последний вариант намного проще и удобнее в использовании, вызовите его, используя следующий синтаксис.
$ ssh-copy-id user@rhel-9-server-IP
В нашем случае команда будет выглядеть следующим образом, где tecmint — это обычный пользователь, а 192.168.254.129 — IP-адрес удаленного пользователя.
$ ssh-copy-id tecmint@192.168.254.129
Введите yes, чтобы продолжить подключение. Затем введите пароль удаленного пользователя и нажмите ENTER.
Открытый ключ будет скопирован в файл authorized_keys в каталоге ~/.ssh домашнего каталога удаленного пользователя. После копирования ключа вы можете войти в удаленный экземпляр RHEL 9, используя аутентификацию с открытым ключом.
ПРИМЕЧАНИЕ: В RHEL 9 вход root по SSH отключен или запрещен по умолчанию. На это есть веские причины — это не позволяет злоумышленнику войти в систему под учетной записью root, что даст ему все привилегии в системе. Поэтому копирование открытого ключа в систему RHEL от имени root будет неудачным.
Включение входа с правами root в RHEL 9
Если вам нужно войти в систему от имени root, вам нужно изменить конфигурацию SSH по умолчанию следующим образом.
$ sudo vim /etc/ssh/sshd_config
Затем установите для атрибута PermitRootLogin значение yes, сохраните изменения и выйдите из файла.
Чтобы применить внесенные изменения, перезапустите службу SSH. Сделать это можно командой:
$ sudo systemctl restart ssh
Шаг 3: Проверка аутентификации открытого ключа SSH без пароля
Теперь давайте подтвердим аутентификацию с открытым ключом. Для этого войдите в систему следующим образом.
$ ssh tecmint@192.168.254.129
На этот раз вам не потребуется вводить пароль, и вы сразу попадете в удаленную оболочку RHEL 9, как показано на рисунке ниже. Вы также можете проверить наличие файла authorized_keys, как упоминалось ранее.
$ ls -l ~/.ssh
Вы также можете просмотреть файл открытого криптографического ключа с помощью команды cat.
$ cat ~/.ssh/authorized_keys
На рабочем столе Linux, на котором мы генерировали ключи SSH, в каталоге ~/.ssh создается файл под названием known_hosts. Он содержит отпечатки всех удаленных серверов, к которым подключалась система.
Заключение
В этой статье мы успешно настроили аутентификацию на основе ключей SSH на RHEL 9. Оставляйте комментарии.