ansible 批量公钥认证
目的是不使用 expect 程序,给远程服务器的任意用户批量推送公钥,进行免密登录,也就是可以不使用初始化脚本了,使用 ansible 的模块就可以办到。
总体思路是这样的:
首先创建一个加密的文件,并且把我们使用的变量和值(就是连接到远程服务的ssh 用户名的密码)编辑到这个加密的文件种。之后让 ansible 使用,这样可以保护我们ssh 用户的密码不被泄露。
之后在 playbook 中使用这个加密文件,并且在使用模块 authorized_key
给指定的远程主机用户发送用于认证的公钥。
1 安装ansible
[root@ansible ~]# yum install epel-release
[root@ansible ~]# yum install ansible
2 产生公钥
[root@ansible ~]# ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
3 首先配置不检测对方主机公钥
在 ansible.cfg
文件中设置如下内容
[root@ansible ~]# vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
4 创建加密文件
使用 ansible-vault create
命令可以创建一个经过加密的文件。
此时会提示输入解密这个加密文件的密码,输入两次密码后,会调用默认的 vi
编辑器编辑这个文件,此时就可以把需要加密的变量等数据写到这个文件中,写完后保存退出即可。
创建加密文件