ansible使用普通用户管理被控节点
本次的任务:
1 2 3 | 1:ansible的连接被控节点是是以q7用户进行操作的 2:q7用户拥有root用户的权限,进行提权的操作 3:ssh连接时,不需要输入密码,用密钥来进行登录 |
步骤流程:
1:将/etc/ansible的配置文件移动到家目录下
1 2 3 4 5 6 7 8 9 10 11 | [root@controller ~]# mkdir ansible [root@controller ~]# ls anaconda-ks.cfg Documents Music Templates ansible Downloads Pictures Videos Desktop initial-setup-ks.cfg Public [root@controller ~]# 模仿ansible.cfg里面的参数来写,或者直接复制过来 [root@controller ansible]# ls ansible.cfg hosts [root@controller ansible]# |
2:配置主机清单
1 2 3 4 5 6 7 8 9 10 | [root@controller ansible]# vim hosts [root@controller ansible]# cat hosts [test] client [root@controller ansible]# 对于被控节点的域名解析的配置 [root@controller ansible]# vim /etc/hosts 192.168.20.111 controller 192.168.20.112 client |
3:普通用户的权限提升
普通用户具有root用户的权限
1 2 3 4 5 6 | #在控制节点上配置普通用户的提权 [root@controller /]# echo "q7 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers #被控节点的操作(使用ssh来进行操作) [root@controller /]# ssh root@client "echo 'q7 ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers" root@client's password: [root@controller /]# |
4:生成密钥
因为每次使用ssh的时候,都会输入密码,所以使用密钥来进行认证(减少麻烦)
1 2 3 4 5 6 7 8 9 10 | #先要切换到普通用户 su - q7 #生成密钥 ssh-keygen [q7@controller ~]$ ssh-keygen #发送公钥给被控节点 [q7@controller ~]$ ssh-copy-id q7@client #在被控节点上面查看公钥 [q7@client .ssh]$ ls authorized_keys [q7@client .ssh]$ |
5:配置ansible的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #定义ansible的主机清单的路径 inventory = /home/ansible/hosts #连接时是进行密码验证还是密钥验证 ask_pass = Flase #连接时不验证主机指纹信息 host_key_checking = Flase #远程管理被控节点是登录的什么用户 remote_user = q7 #提权的方式 [privilege_escalation] become=True #是否要提权 become_method=sudo #提权的方式是什么 become_user=root #提权到哪一个用户 become_ask_pass=False #提权时需不需要密码 |
总的步骤就是
1:先要配置好网络和域名解析
2:创建所有主机都有的用户名
3:给所有的普通用户提权(每次使用的用户就是q7)
4:配置ssh免密钥登录(每次使用ssh的时候,不需要输入密码)
5:修改/home/q7/ansible/下的配置文件和主机清单(这个就是ansible的优先级需要注意一下)
修改里面的几个参数就可以了
1 2 3 | 2个点就是 1:使用sudo提权的时候,需要输入自己的用户密码,使用NOPASSWD这个选项可以避免输入这个 2:就是没有使用免密钥登录的时候,每次使用ssh都会要求用户输入连接的密码,所以,使用了免密钥的操作后,不需要输入密码就能直接进行操作 |
几个重要的点就是:
就是有2个点在控制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 提权 第一点:/etc/sudoers这个配置文件 提权的时候不需要输入密码 q7 ALL=(ALL) NOPASSWD:ALL 第二点:ansible这个配置文件 become=True #是否提权 become_method=sudo #提权的方式 become_user=root #提权的用户是谁 become_ask_pass=False #提权的时候,是否输入密码 免密钥的操作 第一点: 生成密钥后,使用ssh不需要输入密码 第二点: ask_pass = False #就是在连接的时候,是否输入密码 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步