按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环境下。具体方法如下:
1) 在服务端安装ansible
[root@ansible-server ~]# yum install -y ansible
2) 配置ansible到远程主机的ssh无密码信任关系 (authoried_keys
模块)
批量实现多台服务器之间ssh无密码登录的相互信任关系, 可以参考之前的文章: https://www.cnblogs.com/kevingrace/p/9063745.html
这里采用Ansible 实现批量建立互信, 方法如下:
首先要生成ansible服务端本机ssh的key
[root@ansible-server ~]# ssh-keygen -t rsa //一路回车
[root@ansible-server ~]# ls /root/.ssh/
id_rsa id_rsa.pub
====================================================
需要注意ssh建立互信的命令格式:
# ssh-copy-id -i ~/.ssh/id_rsa.pub username@[ip,hostname]
====================================================
在客户机比较多的情况下,使用 ssh-copy-id命令的方法显然是有些费时,使用ansible-playbook 推送 ymal进行批量创建ssh互信关系就显得省事多了,
这里就使用到了ansible的authoried_keys 模块:
首先要配置ansible清单 (远程主机的密码这里为"123456")
[root@ansible-server ~]# vim /etc/ansible/hosts
................
................
[ssh-host]
172.16.60.204
172.16.60.205
172.16.60.206
172.16.60.207
[ssh-host:vars]
ansible_ssh_pass="123456"
==========================================================
发送公钥到目标机器命令格式如下:
# ansible ssh-host -m copy -a "src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys mode=600"
==========================================================
编写playbook文件
[root@ansible-server ~]# vim /opt/ssh_key.yaml
---
- hosts: ssh-host
user: root
tasks:
- name: ssh-copy
authorized_key: user=root key="{