这是我的192.168.1.12 | 无法访问! => { "changed": false, "msg": "错误!SSH在连接期间遇到未知错误。我们建议您重新运行命令,使用-vvvv,这将启用SSH调试输出以帮助诊断问题", "unreachable": true }
hosts
文件:[test]
192.168.1.12
这是临时指令:
ansible all -m ping
我能够通过原始ssh
连接。
默认情况下,Ansible尝试使用SSH密钥。看起来你的密钥有误。尝试使用密码认证。
ansible all -m ping --ask-pass --ask-sudo-pass
希望这可以帮到你。
@bigdestroyer,要设置SSH公钥,请使用此playbook
- hosts: all
remote_user: root
vars:
authorized_key_list:
- name: root
authorized_keys:
- key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: present
roles:
- { role: GROG.authorized-key }
使用--ask-pass
参数执行此playbook,因为您将使用它来设置公钥身份验证。
ansible-playbook setup_ssh.yml --ask-pass
此角色将把当前用户的公钥添加到远程主机的authorized_keys
文件中。
注意
ask-pass
仅在每次运行时工作一次,因此这仅适用于具有相同密码的主机。
我通常使用-limit
并分批在具有相同密码的主机上执行。
例如,假设host1、host2和host3的密码为foo
,host4和host5为bar
ansible-playbook setup-ssh.yml --ask-pass -l host1,host2,host3
提供密码foo
ansible-playbook setup-ssh.yml --ask-pass -l host4,host5
提供密码bar
然后
ansible -m ping host1,host2,host3,host4,host5
您可以在此处阅读角色文档。
ansible-galaxy install GROG.authorized-key
。 - Bernardo Valepython -V
- Bernardo Vale对于使用 Ansible 2.6 的用户,--ask-sudo-pass
已经被弃用。正确的语法是:
ansible all -m ping --ask-pass --ask-become-pass
我通过添加--ask-pass
参数来解决了这个问题。
确保每台机器都设置了ssh密钥,使用ssh-keygen命令。
ssh-keygen
使用ssh-copy-id命令将您的公钥传输到机器上。
ssh-copy-id -i <id_rsa.pub文件位置> <主机IP地址>
ansible all -m ping -vvv
的结果。 - Raul Hugo