• Ansible免密登录


    Ansible实践篇(一):Ansible免密登录

    主要是ansible服务端需要将/root/.ssh/id_rsa.pub分发到其他服务器

    有两个命令比较重要

    ssh-keygen :这个命令是用来生成本机的公钥和私钥的
    ssh-keyscan : 这条命令是用来把远程服务器的公钥来获取到本地的

    (1)首先关闭公钥认证

    如果说不想关闭公钥认证的话,可以用ssh-keycan 命令将公钥添加到本地的known_hosts文件里面去
    具体命令是ssh-keyscan IP1 (IP2 ...) >> /root/.ssh/known_hosts 可以添加多个

    Ansible1.2.1及其之后的版本都会默认启用公钥认证.

    公钥认证就是如果之后的某一台客户端和之前登录过的某一台主机IP相同,那么在“known_hosts”中有了不同的key,这时会提示一个错误信息直到被纠正为止。
    在使用Ansible时,可能不想遇到那样的情况,如果有个主机没有在“known_hosts”中被初始化将会导致在交互使用Ansible或定时执行Ansible时对key信息的确认提示。如果想要禁用这个行为的话,可以关闭公钥认证,而且公钥认证会比较慢,也是提高效率的一个方法


    关闭公钥认证的方法有两种:
    - 编辑ansible.cfg配置文件

    [defaults]
    host_key_checking = False
    • 直接设置环境变量
    命令为:
    export ANSIBLE_HOST_KEY_CHECKING=False

    (2)使用ssh-key产生公钥和私钥

    [root@localhost ansible]# ssh-keygen -t rsa -b 2048 -P ” -f /root/.ssh/id_rsa

    (3)添加主机信息到hosts文件中

    [root@localhost ansible]# pwd
    /etc/ansible
    [root@localhost ansible]# vim hosts
    [db]
    172.25.70.1 ansible_ssh_user="root" ansible_ssh_pass="redhat"
    172.25.70.2 ansible_ssh_user="root" ansible_ssh_pass="redhat"
    
    ##如果用户名和密码都相同的话也可以不用添加,在执行第5步的时候加上-u和-k就可以了

    (4)编写Playbook剧本文件

    ##是基于YAML语言编写的
    
    [root@localhost ansible]# vim ssh.yml
    # ssh-addkey.yml 
    ---
    - hosts: all
      gather_facts: no
    
      tasks:
    
      - name: install ssh key
        authorized_key: user=root
                        key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" 
                        state=present

    (5)运行playbook文件

    [root@localhost ansible]# ansible-playbook -i hosts ssh.yml
    这里写图片描述

    (6)测试

    此时运用模块或者直接ssh登录主机都不需要密码
    这里写图片描述

  • 相关阅读:
    一维函数指针数组和二维函数指针数组demo
    等着新工作
    SSRS常见问题解决方案
    速度
    javascript 满足多层treeview的各种勾选
    vue create 初步解析以及定制化修改
    leveldb总结
    秋招总结场景设计题
    NOSQL: mongoDB windows
    更新webconfig配置文件
  • 原文地址:https://www.cnblogs.com/wanglfhh/p/12447360.html
Copyright © 2020-2023  润新知