Ansible - неверно кодовая фраза - даже если она должна быть правильной

Я запускаю доступные модули / playbook (например, ping) с помощью этой команды пользователем, имеющим права sudo:

sudo ansible -m ping hosts

"hosts" - это группа из 2 хостов . Когда я запускаю это, меня просят ввести локальный пароль sudo, и это нормально. Затем меня просят sudo на удаленном хосте (потому что я настроил это в ansible.cfg), что тоже нормально. Затем мне нужно ввести парольные фразы для обоих хостов, и здесь у меня проблема. Меня спрашивают буквально так, в одной строке:

Enter passphrase for key '/home/myuser/.ssh/id_rsa':Enter passphrase for key '/home/myuser/.ssh/id_rsa':

, поэтому я просто ввожу свою кодовую фразу абсолютно правильно (скопировано из keypass) и ввожу. И меня снова спрашивают парольную фразу, теперь только один раз:

Enter passphrase for key '/home/myuser/.ssh/id_rsa':

Итак, я ввожу ее снова ... и меня спрашивают снова и так далее, пока ssh не умрет и хосты не станут недоступны. Странно то, что иногда я могу заставить его работать, просто нажав "Enter" при первой попытке, затем вставив кодовую фразу, и вторые хосты внезапно заработают. Когда я запускаю его еще раз, меня спрашивают кодовую фразу только один раз (для хоста, который раньше не работал), я ввожу кодовую фразу, и теперь она работает .. я типа, какого черта?

Это ошибка в Ansible или я делаю что-то там не так? Если я просто подключу ssh к своим хостам, он будет работать нормально. Пытался запустить мои доступные команды с множественной подробностью, но не нашел там ничего плохого. Есть идеи?

0
задан 21 September 2018 в 17:05
3 ответа

Один из вариантов - добавить ваш ключ к ssh-agent с помощью ssh-add . Таким образом, вы больше этого не получите.

0
ответ дан 4 December 2019 в 15:50

Во-первых, вам не нужно использовать sudo локально для выполнения этой команды. Так что спасайте себя sudo'ing локально без причины.

Далее, вам не нужен пароль для ping target. Этого будет достаточно:

$ ansible all -i /tmp/hosts2ping -m ping

... где hosts2ping содержит ваш список хостов.

Если вы делаете что-то на удаленном компьютере, что требует, чтобы вы входили в систему как не root, вам нужно указать -k (или добавьте 'ask_pass = True' в ~ / ansible.cfg):

$ ansible all -i /tmp/hosts2ping -a id -k
SSH password: <enter password>
10.1.2.3 | SUCCESS | rc=0 >> uid=nnnn<non-root-account>.....

... но запрос должен запрашиваться только один раз для всех хостов.

Если вам нужно выполнить задачу root, также используйте -Kb ...

$ ansible all -i /tmp/hosts2ping -a id -k -Kb
SSH password: <enter password>
SUDO password[defaults to SSH password]: <RETURN>
10.1.2.3 | SUCCESS | rc=0 >> uid=0(root).....

Если ваш ключ ssh развернут на целевом компьютере, загрузите его в ssh-agent, и вам не понадобится -k ...

$ ssh-add
Enter passphrase for .ssh/id_rsa:
identity added: .ssh/id_rsa

$ ansible all -i /tmp/hosts2ping -a id   # -k not needed
10.1.2.3 | SUCCESS | rc=0 >> uid=nnnn<non-root-account>.....

... ssh-agent сделает всю работу.

Вам все равно понадобится - Kb, если вы выполняете корневые операции на удаленном компьютере, но не получите запрос на ввод пароля без полномочий root (как это делает ssh-agent) ...

$ ansible all -i /tmp/hosts2ping -a id -Kb   # -k not needed
SUDO password[defaults to SSH password]: <RETURN>
10.1.2.3 | SUCCESS | rc=0 >> uid=0(root).....

EDIT: Обычно sudo просто позволяет вашей учетной записи без полномочий root «установить пользователя» как другого, обычно самого root. Итак, вы заходите в общую учетную запись, чтобы делать привилегированные вещи? Это все еще должно работать. Просто измените параметры 'стать', чтобы указать общую учетную запись (вместо использования по умолчанию root), например:

$ ansible all -i /tmp/hosts2ping -a id -k -Kb --become-user=<shared-account>
SSH password: <enter password>
SUDO password[defaults to SSH password]: <RETURN>
10.1.2.3 | SUCCESS | rc=0 >> uid=43526(<shared-account>).....
1
ответ дан 4 December 2019 в 15:50

У меня была эта проблема, когда я пытался использовать Ansible через хост-бастион (jumpbox). Что было исправлено:

yum update

0
ответ дан 10 April 2020 в 14:18

Теги

Похожие вопросы