前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)

Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)

作者头像
非著名运维
发布2022-06-22 15:55:23
发布2022-06-22 15:55:23
1.5K00
代码可运行
举报
文章被收录于专栏:非著名运维非著名运维
运行总次数:0
代码可运行

例子:

代码语言:javascript
代码运行次数:0
复制
cat -n /etc/ansible/hosts
1 192.168.100.59:22
2 192.168.100.60 ansible_ssh_pass=123456 ansible_ssh_port=22
3 [nginx]
4 192.168.100.5[7:9]
5 [nginx:vars]
6 ansible_ssh_pass='123456'
7 [webservers:children]
8 nginx

 第⼀⾏和第⼆⾏单独定义主机,第⼀⾏带上了连接被管节点的端⼝,第⼆⾏带上了单独传递给ssh的参数,分别是ssh连接时的登录远程⽤户的密码参数和ssh的连接端⼝。

第三⾏和第四⾏定义的是nginx主机组,该组中包含了192.168.100.57到59这3台主机。还⽀持字母的扩展,如"web[a-d]"。

 第五⾏和第六⾏定义了要传递给nginx主机组的变量。若定义为"[all:vars]"或"[*:vars]"则表⽰传递给所有主机的变量。

 第七和第⼋⾏定义了⼀个新的主机组webservers,该组的组成员有nginx组。

以上例子中存在的问题:

 一般不推荐使用上面的ansible_ssh_pass=123456明文密码,应该使用ssh私匙,但是在生产环境中,在主机中不可能只使用一种私匙,可能各种需要无密码连接的服务都使用了私匙,使用一种私匙很不安全,所以会有各种服务使用不同的私匙,那怎么办呢?

解决:

 在ansible中需要使用ansible_ssh_private_key_file='私匙文件路径'来指明ansible这个服务使用的私匙文件路径。

代码语言:javascript
代码运行次数:0
复制
vim /etc/ansible/hosts
...
[nginx]
192.168.100.57  ansible_ssh_private_key_file="/root/.ssh/57_key"
192.168.100.58
192.168.100.59  ansible_ssh_private_key_file="/root/.ssh/59_key"

衍生问题:

 在上面的指明ssh私匙文件路径的情况适合某一台主机,但是ansible都是主机组,无数多台主机,不可能每台主机后面都指明ssh私匙文件路径,那又怎么办呢?

解决:

 这里就需要用到vars变量定义,即可以定义一个变量,可以单独为一个主机组定义一个变量指明ssh私匙路径,该主机组的主机即可都是用该变量中指明的ssh私匙文件,也可以为所有主机组(all)定义一个变量,所有主机都使用变量中指明的的ssh私匙文件。

代码语言:javascript
代码运行次数:0
复制
vim /etc/ansible/hosts
...
[nginx]
192.168.100.5[7:9]
...
[nginx:vars]
ansible_ssh_private_key_file="/root/.ssh/key"
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子:
  • 以上例子中存在的问题:
  • 解决:
  • 衍生问题:
  • 解决:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档