Ansible:权限被拒绝(公钥,密码)

Héc*_*tor 3 ssh ansible

我无法连接到Ansible中的主机.这是错误:

192.168.1.12 | UNREACHABLE!=> {"已更改":false,"msg":"错误!SSH在连接过程中遇到未知错误.我们建议您使用-vvvv重新运行命令,这将启用SSH调试输出以帮助诊断问题", "无法到达":真实}

这是我的hosts档案:

[test]
192.168.1.12
Run Code Online (Sandbox Code Playgroud)

这是临时指令:

ansible all -m ping
Run Code Online (Sandbox Code Playgroud)

我可以通过raw连接ssh.

Sap*_*lio 8

默认情况下,Ansible尝试使用SSH密钥.看来你的钥匙错了.尝试使用密码身份验证.

ansible all -m ping --ask-pass --ask-sudo-pass

我希望它有所帮助.


Ber*_*ale 5

@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 }
Run Code Online (Sandbox Code Playgroud)

使用此剧本,--ask-pass因为您将使用它来设置公共密钥身份验证。

ansible-playbook setup_ssh.yml --ask-pass

该角色会将您当前的用户公共密钥添加到远程主机authorized_keys文件中。

注意

ask-pass 每次运行只能运行一次,因此仅适用于具有相同密码的主机。

我通常-limit在具有相同密码的主机上批量使用和执行。

例如,假设host1,host2和host3的密码分别为foohost4和host5bar

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

您可以在此处阅读角色文档