Короче,
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
выполняет все локально (т. е. не выполняет доступную книгу воспроизведения на удаленном сервере (хотя похоже, что это так)).