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

问题描述 投票:2回答:5

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

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

这是我的hosts文件:

[test]
192.168.1.12

这是临时指令:

ansible all -m ping

我可以通过原始ssh连接。

ssh ansible
5个回答
7
投票

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

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

我希望它有所帮助。


4
投票

@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


1
投票

对于那些来这里运行Ansible 2.6的人来说,--ask-sudo-pass现已弃用。正确的语法是:

ansible all -m ping --ask-pass --ask-become-pass

0
投票

我遇到了这个问题 - 我的ssh密钥设置不正确。我使用以下方法修复了此问题:

  • 使用ssh-keygen命令确保每台计算机都设置了ssh密钥。 ssh-keygen
  • 使用ssh-copy-id命令将公钥传递给计算机。 ssh-copy-id -i <location of id_rsa.pub> <ip-address of host>

这有助于解决我的错误,希望它有所帮助!


0
投票

我通过添加--ask-pass参数解决了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.