linux批量改密码
安装ansible
yum install -y ansible
采用ansible建立 ssh 无密码登入
# ssh-keygen -t rsa #一路回车
# s /root/.ssh/
首先要配置ansible清单 (远程主机的密码这里为"123456")
[root@ansible-server ~]# vim /etc/ansible/hosts
................
................
[ssh-host]
172.16.60.204
172.16.60.205
[ssh-host:vars]
ansible_ssh_pass="123456"
发送公钥到目标机器命令格式如下:
vi /etc/ansible/ansible.cfg
host_key_checking = False
1. 使用Ansible的user模块批量修改远程客户机的用户密码
#由于在使用ansible修改用户密码的时候不能使用明文的方式,需要先加密,所以就需要使用一个方法对输入的明文的密码进行加密.
[root@ansible-server ~]# vim /opt/root_passwd.yaml
---
- hosts: ssh-host
gather_facts: false
tasks:
- name: change user passwd
user: name={{ item.name }} password={{ item.chpass | password_hash('sha512') }} update_password=always
with_items:
- { name: 'root', chpass: 'kevin@123' }
- { name: 'app', chpass: 'bjop123' }
#注意上面在yaml文件中修改了远程客户机的root用户密码, app用户密码.
# 如果还想要修改其他用户密码, 则继续按照上面规则添加即可!
# 执行ansible-play
[root@ansible-server ~]# ansible-playbook /opt/root_passwd.yaml
2. 修改远程主机的单个用户密码使用此方法比较方便
# 编写playbook文件
[root@ansible-server ~]# vim /opt/root_passwd2.yaml
---
- hosts: ssh-host
gather_facts: false
tasks:
- name: Change password
user: name={{ name1 }} password={{ chpass | password_hash('sha512') }} update_password=always
#执行ansible-playbook, 使用-e参数传递用户名和密码给剧本,其中root为用户名,admin#123就是修改后的root密码
[root@ansible-server ~]# ansible-playbook /opt/root_passwd2.yaml -e "name1=root chpass=admin#123"