Как настроить аутентификацию SSH без пароля на RHEL 9

В этой статье мы покажем вам как можно настроить аутентификацию 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”.

Ниже приведен результат выполнения команды.

Генерирование пары ключей ECDSA SSH
Генерирование пары ключей ECDSA SSH

Вы можете просмотреть пару ключей SSH с помощью команды ls, как показано ниже.

$ ls -l ~/.ssh

id_ecdsa – это закрытый ключ, а id_ecdsa.pub – открытый ключ. Закрытый ключ всегда должен оставаться в секрете и не должен никому передаваться или разглашаться. С другой стороны, вы можете поделиться открытым ключом с любой удаленной системой, к которой вы хотите подключиться.

Проверка ключей SSH
Проверка ключей SSH

Шаг 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.

Копирование ключа SSH на удаленный RHEL 9
Копирование ключа SSH на удаленный RHEL 9

Открытый ключ будет скопирован в файл 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

Проверка файла authorized_keys
Проверка файла authorized_keys

Вы также можете просмотреть файл открытого криптографического ключа с помощью команды cat.

$ cat ~/.ssh/authorized_keys

Просмотр криптографического ключа
Просмотр криптографического ключа

На рабочем столе Linux, на котором мы генерировали ключи SSH, в каталоге ~/.ssh создается файл под названием known_hosts. Он содержит отпечатки всех удаленных серверов, к которым подключалась система.

Проверка файла known_hosts
Проверка файла known_hosts

Заключение

В этой статье мы успешно настроили аутентификацию на основе ключей SSH на RHEL 9. Оставляйте комментарии.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

Моя работа направлена на образование и распространение знаний в области информационных технологий, помогая другим расширять свои возможности и углублять понимание современных технологий.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.