Я установил ansible 2.8.0 на VM-1 без изменения каких-либо других настроек по умолчанию в ansible.cfg, кроме "host_key_checking = false" .
Затем я запустил ansible all -i "<IP of VM-3>," --private-key <key of VM-3> -u root -m ping
с OK на ВМ-3, но запустил ansible all -i "<IP of VM-2>," --private-key <key of VM-2> -u root -m ping
с ОШИБКОЙ на ВМ-2.
Я сгенерировал пару ключей ssh на VM-2 (пользователь является пользователем root) и скопировал содержимое его закрытого ключа (id_rsa) в VM-1. Я сохраняю его в файле с именем «ключ» и устанавливаю режим этого файла «700». Наконец, я выполнил команду ниже:
ansible all -i "<ip of VM-2>," --private-key key -u root -m ping
Это работает неправильно. Информация об ошибке:
/opt # ansible --version
ansible 2.8.0
config file = /opt/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Apr 8 2019, 18:17:52) [GCC 8.3.0]
/opt # ls
ansible.cfg key
/opt # ansible all -i "192.168.100.100," --private-key key -u root -m ping
192.168.100.100 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: root@192.168.100.100: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",
"unreachable": true
}
Затем я переключился на использование опции "-k", и она работает.
/opt # ansible all -i "192.168.100.100," -k -u root -m ping
SSH password:
192.168.100.100 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Затем я снова попробовал на ВМ-3 с теми же шагами, что и ВМ-2. Команда с использованием ключа --private-key работает. Среда ВМ-2 и ВМ-3 очень похожи.
Я не нашел никакой разницы между конфигурацией sshd в VM-2 и VM-3.
Так что я очень запутался с этим выше.
Кроме того, команда «--private-key» будет в порядке после выполнения команды «-k», потому что в фоновом режиме существует отдельный процесс, например:
/opt # ansible all -i "192.168.100.100," -k -u root -m ping
SSH password:
192.168.100.100 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
/opt # ps -ef |grep ansible
126 root 0:00 ssh: /root/.ansible/cp/e42d5dc861 [mux]
/opt # ansible all -i "192.168.100.100," --private-key key -u root -m ping
192.168.100.100 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Я хочу знать, как правильно использовать «--private-key» в командной строке ansible.