Вопрос или проблема
как использовать аутентификацию SSH на основе сертификатов для выполнения команды sudo?
Ответ или решение
Для реализации аутентификации на основе сертификатов SSH для использования команды sudo
, требуется провести ряд настроек как на серверной, так и на клиентской стороне. Такой подход улучшает безопасность, устраняя зависимость от паролей и облегчая управление доступами. Ниже приводится пошаговая инструкция по настройке.
Шаг 1: Настройка CA-директора
Начните с генерации пары ключей для центра сертификации (Certificate Authority, CA), которая будет использоваться для подписи пользовательских ключей:
- Генерация 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
.
- Создайте сертификат:
ssh-keygen -s ~/ca_user_key -I user_cert -n username -V +52w user_ssh_key.pub
-I
используется для идентификации сертификата.-n
указывает имя пользователя.-V
определяет срок действия сертификата.
Шаг 3: Настройка серверной стороны
-
На сервере добавьте CA-публичный ключ в файл конфигурации SSH:
Откройте
sshd_config
, который обычно находится в/etc/ssh/
, и добавьте:TrustedUserCAKeys /etc/ssh/ca_user_key.pub
Сохраните файл и перезапустите службу SSH:
sudo systemctl restart sshd
Шаг 4: Настройка sudo
для сертификатов
-
Создайте правило в
sudoers
:Редактируйте файл
sudoers
с помощьюvisudo
, чтобы правило для указанного пользователя или группы выглядело так:username ALL=(ALL) NOPASSWD: ALL
Это правило позволяет
username
выполнять команды сsudo
без ввода пароля.Примечание: Убедитесь в безопасности и целесообразности предоставления полномочий на выполнение команд без пароля.
Шаг 5: Настройка клиентской стороны
-
Распространите сертификаты на клиентскую машину:
Скопируйте
user_ssh_key
иuser_ssh_key-cert.pub
на клиентскую машину в папку~/.ssh/
. -
Настройте 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
, не вводя пароля, благодаря сертификатам, что повышает как безопасность, так и удобство работы. Убедитесь в регулярной аудитории безопасности и корректности настроек для минимизации рисков.
Такой процесс не только оптимизирует администрирование системных доступов, но и упрочняет общий уровень безопасности вашей инфраструктуры.