Ssh Ansible:拒绝许可

Ssh Ansible:拒绝许可,ssh,ansible,ansible-playbook,Ssh,Ansible,Ansible Playbook,我无法使用公钥身份验证运行playbook。我得到这个错误: 正在尝试私钥:/root/.ssh/id\u dsa\r\n错误3:没有此类标识: /root/.ssh/id\u dsa:没有这样的文件或目录\r\n错误1:正在尝试私有 key:/root/.ssh/id\u ecdsa\r\n错误3:没有这样的标识: /root/.ssh/id\u ecdsa:没有这样的文件或目录\r\n错误1:正在尝试 私钥:/root/.ssh/id\u ed25519\r\ndebug3:没有这样的标识:

我无法使用公钥身份验证运行playbook。我得到这个错误:

正在尝试私钥:/root/.ssh/id\u dsa\r\n错误3:没有此类标识: /root/.ssh/id\u dsa:没有这样的文件或目录\r\n错误1:正在尝试私有 key:/root/.ssh/id\u ecdsa\r\n错误3:没有这样的标识: /root/.ssh/id\u ecdsa:没有这样的文件或目录\r\n错误1:正在尝试 私钥:/root/.ssh/id\u ed25519\r\ndebug3:没有这样的标识: /root/.ssh/id\u ed25519:没有这样的文件或目录\r\n错误2:我们没有 发送数据包,禁用方法\r\n错误1:不再进行身份验证 要尝试的方法。\r\n权限被拒绝(公钥、密码)

到目前为止,我一直在使用
--ask pass
身份验证,但现在我需要将其自动化,所以我需要通过公钥来实现。我必须如何配置它

我找到了这个剧本:

---
- hosts: all
  remote_user: root
  vars:
    authorized_key_list:
      - name: root
        authorized_keys:
         - key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
           state: present
我用
--ask pass
执行这个剧本,下一个剧本执行不需要密码,工作正常。但几分钟后它就不会了!为什么?上面的剧本实际上在做什么


提前谢谢。

假设您有两台机器。机器A{Ansible Host}和机器B{target}

在机器A上,您必须使用以下方法生成sshkey:

~$ ssh-keygen 
这将在当前用户的.ssh目录中生成公钥和私钥对

生成密钥后,您需要从机器A的.ssh目录复制公钥{extension.pub}

现在登录到机器B,进入它的.ssh文件夹。现在,您需要创建一个名为“
authorized_keys
”的文件(如果不存在,请确保权限为只读),并将复制的公钥从机器a粘贴到机器B

这已经完成了

现在在计算机A上的主机{inventory}文件中使用以下格式:

 [hosts]
Machine_B_ip ansible_ssh_user=username_here ansible_ssh_private_key_file=/path_of_private_key
例:


您还可以执行ansible ping,以检查ansible是否能够通过ssh作为
ansible all-m ping-vi inventory_文件进行通信。机器A{Ansible Host}和机器B{target}

在机器A上,您必须使用以下方法生成sshkey:

~$ ssh-keygen 
这将在当前用户的.ssh目录中生成公钥和私钥对

生成密钥后,您需要从机器A的.ssh目录复制公钥{extension.pub}

现在登录到机器B,进入它的.ssh文件夹。现在,您需要创建一个名为“
authorized_keys
”的文件(如果不存在,请确保权限为只读),并将复制的公钥从机器a粘贴到机器B

这已经完成了

现在在计算机A上的主机{inventory}文件中使用以下格式:

 [hosts]
Machine_B_ip ansible_ssh_user=username_here ansible_ssh_private_key_file=/path_of_private_key
例:


您还可以执行ansible ping来检查ansible是否能够通过ssh作为
ansible all-m ping-vi inventory_文件进行通信

这不是它应该做的,这只会进入机器B内部,并检查机器a的公钥是否存在于授权密钥中这不是它应该做的,这只会进入机器B内部,检查机器A的公钥是否存在于授权密钥中。您能告诉我哪一个是私钥吗
id\u rsa
文件?没错,id\u rsa是您需要在库存文件中传递的私钥,id\u rsa.pub是需要粘贴到机器B的授权密钥中的公钥,
ansible\u ssh\u user
是远程用户,不是吗?我一步一步地跟着它走,但还是出错了。可能某些
sshd\u config
错误?错误是什么?ansible版本是什么??另请注意:Ansible 2.0已经弃用了来自Ansible_ssh_用户、Ansible_ssh_主机和Ansible_ssh_端口的“ssh”,改为Ansible_用户、Ansible_主机和Ansible_端口,或者根据新配置更改问题并粘贴错误。您能告诉我哪个是私钥吗
id\u rsa
文件?没错,id\u rsa是您需要在库存文件中传递的私钥,id\u rsa.pub是需要粘贴到机器B的授权密钥中的公钥,
ansible\u ssh\u user
是远程用户,不是吗?我一步一步地跟着它走,但还是出错了。可能某些
sshd\u config
错误?错误是什么?ansible版本是什么??另请注意:Ansible 2.0已经弃用了来自Ansible_ssh_用户、Ansible_ssh_主机和Ansible_ssh_端口的“ssh”,改为Ansible_用户、Ansible_主机和Ansible_端口,或者根据新配置更改问题,并粘贴错误。