Почему ssh-agent не аутентифицирует парольную фразу закрытого ключа, когда я использую Ansible?

Короче,

ssh-agent аутентифицирует парольную фразу, когда я нахожусь на удаленном сервере из командной строки, но всякий раз, когда я запускаю доступную книгу воспроизведения, он запрашивает парольную фразу. У меня вопрос: почему ssh-agent не аутентифицирует парольную фразу для Ansible? Как заставить его работать?

Подробно,

Я создал защищенный паролем закрытый ключ и соответствующий открытый ключ и загрузил открытый ключ на сервер. Я вызвал ssh-agent, используя eval $(ssh-agent), а затем ssh-add /etc/ansible/ssh/private-key.pem

Ввод ssh-agent -l показывает, что ключ был добавлен.

Я могу успешно подключиться к машине по ssh из командной строки, используя ssh username@ipaddress, без запроса ключевой фразы. но если я выполню сценарий или сделаю что-то вроде sudo ansible -m ping server, он скажет

Введите кодовую фразу для ключа '/etc/ansible/ssh/private-key.pem':

Я попробовал еще раз в подробном режиме, и он дает мне следующую информацию

ansible 2.4.2.0
config file = /etc/ansible/ansible.cfg настроенный путь поиска модуля = [u '/ etc / ansible / library']
расположение модуля ansible python = /usr/lib/python2.7 / dist-packages / ansible
расположение исполняемого файла = / usr / bin / ansible
версия python = 2.7.12 (по умолчанию, 20 ноября 2017 г., 18:23:56) [GCC 5.4.0 20160609] Использование / etc /ansible/ansible.cfg в качестве файла конфигурации. Разобрал / etc / ansible / hosts в качестве источника инвентаризации с помощью плагина ini.

META: запуск обработчиков Использование файла модуля /usr/lib/python2.7/dist-packages/ansible/modules/system/ping.py ‹35.230.127.195> УСТАНОВИТЬ СОЕДИНЕНИЕ SSH ДЛЯ ПОЛЬЗОВАТЕЛЯ: user6‹ 35.230.127.195> SSH: EXEC ssh -C -o ControlMaster = auto -o ControlPersist = 60s -o StrictHostKeyChecking = no -o Port = 22 -o 'IdentityFile = "/ etc / ansible / ssh / private-key.pem"' -o KbdInteractiveAuthentication = no -o PreferredAuthentication = gssapi-with-mic, gssapi-keyex, hostbased, publickey -o PasswordAuthentication = no -o User = user6 -o ConnectTimeout = 10 -o ControlPath = / home / user6 / .ansible / cp / e26536be01 35.230.127.195 '/ bin / sh -c '"'" 'echo ~ && sleep 0' "'"' 'Введите кодовую фразу для ключа' /etc/ansible/ssh/private-key.pem ':

Моя среда

  • Версия Ansible - 2.4.2.0
  • Версия Python - 2.7.12
  • OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g
  • Ключи ssh были созданы с использованием RSA (не SSH-1 RSA) и 4096 бит.
  • В ansible.cfg транспорт установлен как smart.
  • Ключ зашифрован с помощью ansible-vault, но я пробовал делать это без шифрования, и это не имеет значения.

Пожалуйста, помогите, у меня почти не осталось волос.

ОБНОВЛЕНИЕ: использование transport = local выполняет все локально (т. е. не выполняет доступную книгу воспроизведения на удаленном сервере (хотя похоже, что это так)).


person TryHarder    schedule 04.05.2018    source источник


Ответы (1)


Перейдите в файл ansible.cfg в расположении ниже:

/etc/ansible/ansible.cfg

И установите transport = local:

transport = local

Спасибо

person Aman Aggarwal    schedule 04.05.2018