zoukankan      html  css  js  c++  java
  • 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登录主机都不需要密码
    这里写图片描述

  • 相关阅读:
    reids 入门
    关于字典的那些事儿.
    更新阿里源repo出的问题
    关于-编码进阶
    *** 数据类型之间的转化
    关于列表那些事:12.24
    while else 结构体(自测)
    关于切片的步长为正负值 的问题(自测)
    if 嵌套if 的先后顺序的区别 (自测)
    二: python基础数据类型(int,
  • 原文地址:https://www.cnblogs.com/wanglfhh/p/12447360.html
Copyright © 2011-2022 走看看