Ansible 实现批量建立互信【赠书预告】

290 阅读2分钟

阅读文本大概需要 2 分钟。

什么是 ssh 互信?说白了,就是在目标机器上,预先设置好经过认证的 key 文件,当需要访问目标机器时,目标机器通过 key 文件,对访问者进行自动认证,从而实现互信。

当管理大量机器时,使用 ssh-copy-id 方法一个个建立互信有些费时,那么使用 ansible 是否可以批量建立互信呢?

01. 生成密钥对

ssh-keygen -t rsa

一路回车即可。

02. 建立互信

格式: ssh-copy-id -i ~/.ssh/id_rsa.pub username@[ip,hostname]

ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.2

根据提示完成操作即完成了互信。

03. 批量建立互信

机器多的情况下,使用 ssh-copy-id 方法有些费时,使用 ansible-playbook 推送 ymal,这里使用到了 authoried_keys 模块,可以参考官方文档:http://docs.ansible.com/authorized_key_module.html

建立如下 playbook:

---  - hosts: test    # 互信用户    user: hoxis    tasks:     - name: ssh-copy       authorized_key: user=hoxis key="{{ lookup('file', '/home/hoxis/.ssh/id_rsa.pub') }}"

默认,已在 Ansible 资产文件中配置待互信机器信息。

执行:

# ansible-playbook pushssh.yamlPLAY [test] *****************TASK [Gathering Facts] ******ok: [client]TASK [ssh-copy] *************changed: [client]PLAY RECAP ******************client                     : ok=2    changed=1    unreachable=0    failed=0  

执行完毕,若没有报错,则证明互信建立成功。

测试:执行 ssh 登录,若无需再输入密码,则证明互信建立成功!


活动预告:最近帮大家争取了【赠书福利】,有兴趣的扫描下发二维码,关注赠书活动信息~

Python 帮我起飞


推荐阅读

我的 Python 学习资源分享

Python 爬虫闯关(第三关)

教你用 Python 来朗读网页

Python 爬取「知识星球」

你还在用 format 格式化字符串?

Python 玩转 Excel

戳原文,查看原文博客。