一、怎么生成公私钥
# ssh-keygen
# ls /root/.ssh/
id_rsa 私钥
id_rsa.pub 公钥
known_hosts 通过ssh协议通信过的机器的密纹
authorized_keys 存储传递过来的公钥
二、怎么拷贝公钥,如果要指定端口加-p,默认22端口
# ssh-copy-id root@192.168.58.101
如果没有ssh-copy-id 命令 需要安装yum -y install openssh-clientsansible
验证:
# ssh root@192.168.58.101
# exit
三、假设ansible主被控端为sudo用户wsl时,该怎么办呢?
主控端:192.168.58.100
被控端:192.168.58.101
192.168.58.102
第一步:主控端要做好免密
# ssh-keygen //创建公私钥,如果已经有,则不需要创建
# ssh-copy-id wsl@192.168.58.101 //将本地主机的公钥复制到远程主机的authorized_keys文件上
# ssh-copy-id wsl@192.168.58.102 //将本地主机的公钥复制到远程主机的authorized_keys文件上
或者循环复制
# for host in 192.168.58.101 192.168.58.102
do
ssh-copy-id zhangsan@$host
done
验证
# ssh wsl@192.168.58.101
# ssh wsl@192.168.58.102
第二步:修改配置文件,默认路径为/home/wsl/ansible/ansible.cfg
inventory = ~/ansible/inventory
host_key_checking = False //关闭第一次连接客户端时的SSH主机秘钥检查
remote_user = wsl
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
第三步:修改主机清单文件
# /home/wsl/ansible/inventory
[web1]
192.168.58.101
[web2]
192.168.58.102
[web3]
192.168.58.101
192.168.58.102
第四步:被控端需要做好sudo提权,单独提权或者添加到wheel组里面
账户名称为wsl,密码为123456,sudo用户必须有密码
修改sudo配置,让wsl用户可以执行任何管理命令
修改/etc/sudoers的方法如下:
# visudo (带语法检查,默认没有颜色提示)
# vim /etc/sudoers (不带语法检查,默认有颜色提示)
授权格式如下:
在^root的下方添加
wsl ALL=(ALL) ALL,NOPASSWD:ALL
注意:
1、普通用户也可以使用ansible命令,如果在执行ansible时添加了sudo,那么就认为是root在执行ansible,如果root用户没有对被控端进行免密,也是执行不了的
2、如果执行ansible任务时涉及到本地执行connection: local,并且此任务本地执行普通用户执行不了,例如创建用户,命令在/usr/sbin/下,只有root用户或者sudo用户才能执行,就需要给主控端的普通用户提权
3、ansible的配置文件默认路径为/etc/ansible/ansible.cfg,如果当前所在位置存在ansible.cfg配置文件,优先识别当前所在位置下的ansible.cfg