我正在尝试使用剧本更改密码,但没有获得这样做的许可。
我正在运行命令:
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}
答案 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>