Я настраиваю 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):
ansible_password
в хранилище Ansible для каждого хоста