Только начав с Ansible, я установил пользователя Asible на клиентской машине и создал набор ключей из OpenSSL. Я использую Ansible под своей учетной записью. Я указал файл пользователя и закрытого ключа в конфигурации Ansible. Я хочу, чтобы удаленные команды выполнялись от имени этого пользователя, а этот пользователь - от имени sudo для выполнения команд, требующих повышения прав.
/etc/ansible/ansible.cfg
private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman
Такие команды, как эта, не запрашивают парольную фразу после первоначального ввода парольной фразы:
ansible all -m ping
Следующая подсказка для ключевой фразы каждый раз, когда я их запускаю:
ansible all -m ping -b
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
ansible all -m ping --sudo
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
ansible all -a "cat /etc/redhat-release"
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
Зачем?
Есть ли способ установить кодовую фразу? Есть ли более безопасный способ? Я планирую запускать ansible удаленно, через cron и другие инструменты автоматизации, где ввод пароля невозможен.
Что касается контекста, мне никогда не нужно было использовать SSH между серверами Linux, всегда с машины Windows с использованием таких инструментов, как putty, RoyalTS и mRemoteNG, поэтому мои знания ssh ... скудны. Полагаю, мне не хватает чего-то очевидного.
Функция называется ssh-agent
:
$ eval `ssh-agent` # you might have agent already running so this might not be needed
$ ssh-add /etc/ansible/private_keys/confman.crt
теперь ansible должен иметь возможность найти ключ в агенте и пройти аутентификацию, не запрашивая каждый раз кодовую фразу. От: Документация: Ваши первые команды