我无法连接到Ansible中的主机。这是错误:
192.168.1.12 | UNREACHABLE! => {“已更改”:false,“msg”:“错误!SSH在连接过程中遇到未知错误。我们建议您使用-vvvv重新运行命令,这将启用SSH调试输出以帮助诊断问题”, “无法到达”:真实}
这是我的hosts
文件:
[test]
192.168.1.12
这是临时指令:
ansible all -m ping
我可以通过原始ssh
连接。
默认情况下,Ansible尝试使用SSH密钥。看来你的钥匙错了。尝试使用密码身份验证。
ansible all -m ping --ask-pass --ask-sudo-pass
我希望它有所帮助。
@bigdestroyer,设置ssh公钥使用这个剧本
- 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
您可以阅读角色文档here
对于那些来这里运行Ansible 2.6的人来说,--ask-sudo-pass
现已弃用。正确的语法是:
ansible all -m ping --ask-pass --ask-become-pass
我遇到了这个问题 - 我的ssh密钥设置不正确。我使用以下方法修复了此问题:
ssh-keygen
ssh-copy-id -i <location of id_rsa.pub> <ip-address of host>
这有助于解决我的错误,希望它有所帮助!
我通过添加--ask-pass
参数解决了这个问题