一,ansible的authorized_key模块的用途

用来配置密钥实现免密登录:

ansible所在的主控机生成密钥后,如何把公钥上传到受控端?

当然可以用ssh-copy-id命令逐台手动处理,如果受控端机器数量不多当然没问题,

但如果机器数量较多,有几十几百台时,手动处理的效率就成为问题。

authorized_key模块就用来把公钥上传到各台服务器实现免密登录

二,authorized_key的使用例子:

1,在hosts中增加一个段:

[test]
192.168.0.87:22 ansible_ssh_user=root ansible_ssh_pass="rootpass"
192.168.0.88:22 ansible_ssh_user=root ansible_ssh_pass="rootpass"
192.168.0.89:22 ansible_ssh_user=root ansible_ssh_pass="rootpass"

批量上传公钥

[root@centos8 ~]# ansible ils -m authorized_key -a "user=root state=present key='{{ lookup('file', '/home/liuhongdi/.ssh/id_rsa.pub') }}'"

出现报错:

192.168.0.87 | FAILED! => {
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.
Please add this host's fingerprint to your known_hosts file to manage this host."
}

问题的原因:

ssh第一次连接的时候一般会提示fingerprint key字符串,需要输入yes 进行确认.

确认后会把key字符串加入到 ~/.ssh/known_hosts 文件中

解决办法:

修改ansible的配置文件:

[root@centos8 ~]# vi /etc/ansible/ansible.cfg 

把这一行的注释去掉:

host_key_checking = False

说明:这一行的作用:

# uncomment this to disable SSH key host checking

用来禁止ssh的指纹key字串检查

2,再次上传公钥到服务器:

[root@centos8 ~]# ansible ils -m authorized_key -a "user=root state=present key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}'"
192.168.0.87 | CHANGED => {

成功了

手动测试一下:看ssh到目标服务器是否还需要输入密码?

[root@centos8 ~]# ssh -p 22 root@192.168.0.87

三,查看ansible版本

[root@centos8 liuhongdi]# ansible --version
ansible 2.9.5

ansible用authorized_key模块批量推送密钥到受控主机实现免密登录的更多相关文章

  1. ansible用authorized_key模块批量推送密钥到受控主机(免密登录)(ansible2.9.5)

    一,ansible的authorized_key模块的用途 用来配置密钥实现免密登录: ansible所在的主控机生成密钥后,如何把公钥上传到受控端? 当然可以用ssh-copy-id命令逐台手动处理 ...

  2. linux 生成密钥和公钥,实现免密登录

    1. 在相应的用户根目录下生成密钥公钥,输入如下命令: ssh-keygen -t rsa 2. 直接三次回车:会生成两个文件:id_rsa / id_rsa.pub,分别为密钥和公钥 3.  打开公 ...

  3. centos7生成密钥及集群之间免密登录

    1.在本地生成密钥 命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 2.进入.ssh文件夹,创建保存密钥的文件 命令:touch authorized_keys ...

  4. centos平台scp通过密钥远程复制文件(免密登录)

    一,说明:两台机器的平台和ip 1,a服务器: centos8:ip:121.122.123.47 版本 [root@yjweb ~]# cat /etc/redhat-release CentOS ...

  5. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...

  6. Shell脚本实现SSH免密登录及批量配置管理

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  7. 批量实现ssh免密登录

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  8. 【经验】ansible 批量推送公钥

    1.使用 ssh-keygen -t rsa生成密钥对 ssh-keygen -t rsa 2.推送单个公钥到远程机器 格式: ssh-copy-id -i ~/.ssh/id_rsa.pub use ...

  9. ansible 批量推送ssh秘钥

    ansible 批量推送ssh秘钥 参考:http://docs.ansible.com/ansible/authorized_key_module.html # vi /etc/ansible/ho ...

  10. shell脚本批量推送公钥

    目的:新建管理机,为了实现批量管理主机,设置密匙登陆 原理:.通过密钥登陆,可以不用密码 操作过程: 1.生成密匙 ssh-keygen 2.查看密匙 ls   ~/.ssh/ 有私匙id_rsa公匙 ...

随机推荐

  1. nginx的nginx.conf目录简单配置

    我的nginx.conf是在  etc/nginx/目录下 我是直接在http随便找了个地方添加如下代码的: server { listen 8066; server_name 192.168.0.2 ...

  2. iOS开发之时间格式化

    //返回当前时间,以GMT为准 NSDate * date = [NSDate date]; NSLog(@"%@", date); //显示当前时间距离1970-01-01 00 ...

  3. 为知笔记快速隐藏左侧 快捷键 Esc

    为知笔记快速隐藏左侧 快捷键 Esc

  4. Leetcode 二维数组周游 54

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...

  5. 后台传回来的Map类型的数据在前台中的JS代码中使用

    Map<String, String> projectTypeCodeMap = SysCodeUtils.getSysCodeMap(request, CommonFields.XT_P ...

  6. qt中的一些对话框(个人备忘录)

    一.标准对话框 1.对于颜色对话框 void MyWidget::on_pushButton_clicked() { QColorDialog dialog(Qt::red,this); dialog ...

  7. PHP5-8各版本特性详解

    汇总 PHP5.1: autoload PDO MySQLi 类型约束 PHP5.2: JSON 支持 PHP5.3: 命名空间 匿名函数 闭包 新增魔术方法__callStatic()和__invo ...

  8. SQL之查询

    1. SQL之模糊查询 例如查询姓名时,不用输入全名,仅仅输入其中的一部分 语法: select 列名 from 表名 where 列名 like 匹配串 其中 匹配串用英文的单引号括起来 四种匹配模 ...

  9. Component inside <Transition> renders non-element root node that cannot be animated

    原因是transition标签下存在多个根标签 原代码: 解决方法 Suspense还处于试验阶段,可能导致default内容与fallback内容同时存在,导致错误

  10. node.js与js的关系