ansible-playbook не работает внутри сценария bash

Я не уверен, что происходит, и поэтому спрашиваю здесь в надежде, что кто-то из вас сможет это сделать.

Я пытаюсь понять, почему один и тот же one-liner успешно подключается на моем удаленном сервере

ansible-playbook initial.yml -u root -e 'host_key_checking=False' 

но если я запускаю этот же one-liner изнутри shell-скрипта, то получаю:

fatal: [*********]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: root@*************: Permission denied (publickey).\r\n", "unreachable": true}

Я пробовал с sudo и без. Сценарий оболочки находится в той же директории.

Есть какие-нибудь мысли?

0
задан 29 May 2018 в 03:06
1 ответ

Когда вы запускаете ansible-playbook во время входа в систему, тогда ansible может использовать соединение с вашим агентом ключей ssh, чтобы включить использование ключей ssh ​​для входа без ввода пароля или ключевой фразы .

Вы не указываете, как вы запускаете сценарий, содержащий команду, но чаще всего смысл помещать его в сценарий так, чтобы его можно было легко вызвать из cron . Однако среда выполнения из cron не имеет соединения с агентом ключа ssh, и, следовательно, вход на удаленный хост не выполняется.

Одним из способов решения этой проблемы является использование ключа авторизации без парольной фразы, но вы должны осознавать последствия для безопасности! Любой, кто прикоснется к этому закрытому ключу, может войти в систему везде, где установлен открытый ключ. Один из способов смягчить это - использовать принудительную команду с открытым ключом, но это уже другая тема.

3
ответ дан 4 December 2019 в 12:17

Теги

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