Как использовать аутентификацию SSH на основе сертификатов для sudo?

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

как использовать аутентификацию SSH на основе сертификатов для выполнения команды sudo?

Ответ или решение

Для реализации аутентификации на основе сертификатов SSH для использования команды sudo, требуется провести ряд настроек как на серверной, так и на клиентской стороне. Такой подход улучшает безопасность, устраняя зависимость от паролей и облегчая управление доступами. Ниже приводится пошаговая инструкция по настройке.

Шаг 1: Настройка CA-директора

Начните с генерации пары ключей для центра сертификации (Certificate Authority, CA), которая будет использоваться для подписи пользовательских ключей:

  1. Генерация CA-Ключей:
    ssh-keygen -f ~/ca_user_key -C "CA for user authentication"

Теперь у вас есть два файла: ca_user_key и ca_user_key.pub.

Шаг 2: Подписание пользовательских ключей

Предположим, у вас уже есть публичный SSH-ключ для пользователя, и он называется user_ssh_key.pub.

  1. Создайте сертификат:
    ssh-keygen -s ~/ca_user_key -I user_cert -n username -V +52w user_ssh_key.pub
    • -I используется для идентификации сертификата.
    • -n указывает имя пользователя.
    • -V определяет срок действия сертификата.

Шаг 3: Настройка серверной стороны

  1. На сервере добавьте CA-публичный ключ в файл конфигурации SSH:

    Откройте sshd_config, который обычно находится в /etc/ssh/, и добавьте:

    TrustedUserCAKeys /etc/ssh/ca_user_key.pub

    Сохраните файл и перезапустите службу SSH:

    sudo systemctl restart sshd

Шаг 4: Настройка sudo для сертификатов

  1. Создайте правило в sudoers:

    Редактируйте файл sudoers с помощью visudo, чтобы правило для указанного пользователя или группы выглядело так:

    username ALL=(ALL) NOPASSWD: ALL

    Это правило позволяет username выполнять команды с sudo без ввода пароля.

    Примечание: Убедитесь в безопасности и целесообразности предоставления полномочий на выполнение команд без пароля.

Шаг 5: Настройка клиентской стороны

  1. Распространите сертификаты на клиентскую машину:

    Скопируйте user_ssh_key и user_ssh_key-cert.pub на клиентскую машину в папку ~/.ssh/.

  2. Настройте SSH для использования сертификатов:

    Обновите или создайте файл конфигурации ~/.ssh/config, добавив:

    Host targetserver
       HostName server.example.com
       User username
       IdentityFile ~/.ssh/user_ssh_key
       CertificateFile ~/.ssh/user_ssh_key-cert.pub

Вывод

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

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

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

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