Ansible remote_user:root,ssh:权限被拒绝(公钥)

时间:2019-08-09 07:06:34

标签: ansible

我正在尝试使用剧本更改密码,但没有获得这样做的许可。

我正在运行命令:

ansible-playbook playbook.yml -k

- hosts: servers
  remote_user: root
  vars:
   password: $1$Izd9zEZS$T11sNBK3bQgbzWkBMZq.
  tasks:
   - name: Changing Passwords
     user:
      name=root
      password={{password}}
  

致命的:[host1]:无法达到! => {“已更改”:false,“ msg”:“无法   通过ssh连接到主机:权限被拒绝(公钥)。”,   “ unreachable”:true}

3 个答案:

答案 0 :(得分:0)

问题

  

致命:[host1]:...” msg”:“无法通过ssh连接到主机:权限被拒绝(公钥)。”

错误消息指出 ansible_user ,即运行命令ansible-playbook的用户或清单中设置的 ansible_user servers 组中的一个无法通过SSH连接到 root@host1 (请参见 remote_user: root (在剧本中),因为 ansible_user authorized_keys 中缺少 root@host1 的公钥

解决方案

要解决此问题,请将 ansible_user (在大多数情况下为 ~/.ssh/id_rsa.pub )的公钥放入 {{1 }} authorized_keys (在大多数情况下为 root@host1 )。

最佳做法

最佳做法是不允许root用户通过SSH登录。默认情况下,安全系统会禁用通过SSH的root登录。

/root/.ssh/authorized_keys

相反,最佳做法是将SSH作为非特权用户使用,例如 $ grep PermitRootLogin /etc/ssh/sshd_config PermitRootLogin no 并升级特权 remote_user: admin 。查看Understanding Privilege Escalation中的详细信息。

答案 1 :(得分:0)

将用户名和密码放在“ etc \ ansible \ hosts”中

[服务器] 172.30.141.1 ansible_password = xxx ansible_user = root

并通过执行以下命令测试连接性

可以全部-m ping

对我有用。

答案 2 :(得分:0)

使用以下命令将密钥共享到热机。

保存.pub密钥:

ssh-keygen

使用ssh-copy-id命令将密钥复制到主机。

ssh-copy-id <IP address>
相关问题