Назад | Перейти на главную страницу

доступные ssh-соединения с двухфакторной аутентификацией

Я настраиваю ansible для управления целой фермой серверов. Мой подход следующий:

Разрешить пользователю подключаться ко всем серверам, защищая его соединения с помощью тяжелого ключа RSA, защищенной парольной фразой и пароля пользователя.

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

Когда я тестирую (передаю пароли вручную) с помощью простого пинга на тестовый сервер, если я настроил в клиенте оба метода аутентификации (открытый ключ + пароль пользователя), мне предлагается ввести парольную фразу RSA, но не пароль, и, очевидно, выполнение плейбука не удается.

Если я просто установил пароль пользователя в качестве метода аутентификации, playbook выполняется нормально.

Если я просто настроил ключ RSA с его аутентификацией по парольной фразе, работа не закончится, это результат, который у меня был на моем экране в течение как минимум 30 минут (время для исследования, кофе, ...)

PLAY [all] ******************************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************
Enter passphrase for key '/home/users/<user_name>/.ssh/id_rsa': 
ok: [<test_server_ip_address>]

TASK [include vars] *********************************************************************************************************************************************************
ok: [<test_server_ip_address>]

TASK [test connection] ******************************************************************************************************************************************************

И все остальное.

Игра, которую я пытаюсь выполнить, - это

---
- hosts: all
  tasks:
    - name: test connection
      ping:

И команда на выполнение плейбока следующая:

ansible-playbook -i ansible_hosts/test_hosts.yml playbooks/ping.yml

Содержание test_host.yml :

all:
  hosts:
    <test_server_ip_address>

У меня вопрос:

Можно ли настроить двухфакторную аутентификацию для ансибла? Если да, может ли кто-нибудь перенаправить меня в правильном направлении?

Я сомневаюсь, что вы можете использовать парольную фразу ssh-ключа из хранилища Ansible, но общий двухфакторный рабочий процесс выглядит следующим образом:

На стороне сервера включите двухфакторную аутентификацию с помощью

AuthenticationMethods "publickey,password"

в sshd_config.

На стороне клиента (Ansible):

  1. Настроить ssh-agent, добавить к агенту защищенный паролем ключ, когда требуется подключение
  2. Определить ansible_password в хранилище Ansible для каждого хоста
  3. Запустить playbook