Ansible S SH аутентификация с паролем и секретным ключом - PullRequest
1 голос
/ 22 апреля 2020

В целях безопасности и соответствия требованиям мы должны установить 2FA на наших хостах. Мы реализуем это путем принудительной аутентификации с паролями И ключом publi c с параметром AuthenticationMethods в sshd_config. Закрытый ключ также должен иметь пароль.

Таким образом, чтобы запускать playbooks на этих хостах, мы должны иметь возможность ввести пароль для входа и пароль закрытого ключа. Я использовал флаг -k вместе с параметром ansible_ssh_private_key_file в файле hosts (или с флагом --private-key). Он запрашивает пароль для входа в S SH, но затем просто зависает и никогда не запрашивает у меня пароль-пароль. Когда я устанавливаю -vvvv flat, я вижу, что ключ передан правильно, но пароль для входа в S SH не передается командой:

<10.1.2.2> SSH: EXEC sshpass -d10 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o Port=22022 -o 'IdentityFile="/home/me/.ssh/id_ed25519"' -o 'User="me"' -o ConnectTimeout=10 -o ControlPath=/home/me/.ansible/cp/db574551ae 10.1.2.2 '/bin/sh -c '"'"'echo ~me && sleep 0'"'"''

Как заставить Ansible работать и с паролями и с открытыми c ключами?

1 Ответ

1 голос
/ 23 апреля 2020

Как указано в документации Ansible :

Ansible не предоставляет канал для разрешения связи между пользователем и процессом s sh для принятия пароль для расшифровки ключа s sh вручную при использовании подключаемого модуля s sh (который используется по умолчанию). Настоятельно рекомендуется использовать s sh -агент.

Вот почему вам не предлагается вводить пароль вашего личного ключа. Как сказано в комментариях, настройте s sh агента , когда вам будет предложено это сделать:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

Затем, после выполнения playbook, очистит личности так, чтобы в следующий раз запрашивать пароли:

# Deletes all identities from the agent:
ssh-add -D
# or, instead of adding identities, removes identities (selectively) from the agent:
ssh-add -d <file>

Вы можете упаковать добавление ключа, выполнение playbook и очистку в один скрипт оболочки-оболочки.

...