Ansible批量配置服务器免密登录步骤详解

一、准备工作

192.168.85.138 安装ansible,计划配置到139的免密

192.168.85.139 待配置免密

1. 生成SSH密钥对

        在Ansible控制节点生成密钥对,用于后续免密认证:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

全部回车默认,无需设置密码

2. 配置Ansible环境

        关闭Host Key检查:修改`/etc/ansible/ansible.cfg` 文件,避免首次连接提示确认:

 [defaults]
  host_key_checking = False

3,配置Hosts文件

        在/etc/ansible/hosts中定义目标主机及连接参数:

[web_servers]
192.168.85.139 ansible_ssh_user=root ansible_ssh_pass=123456

ansible_ssh_pass=123456: 这个123456就是139的root的登录密码,按需配置即可

4,写一个免密用的yml文件,ssh_key.yml:

- hosts: web_servers
  gather_facts: no
  tasks:
    - name: Deploy SSH public key
      authorized_key:
        user: root
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub')  }}"
        state: present

5,执行这个文件:

ansible-playbook  ssh_key.yml

6,检查是否配置成功:

ansible web_servers -m ping



如果看到上诉内容即为免密配置成功。

7,为多用户配置免密:

- hosts: all
  vars:
    users:
      - name: admin
        key: "{{ lookup('file', '~/.ssh/admin.pub')  }}"
      - name: deploy
        key: "{{ lookup('file', '~/.ssh/deploy.pub')  }}"
  tasks:
    - name: Add SSH keys for multiple users
      authorized_key:
        user: "{{ item.name  }}"
        key: "{{ item.key  }}"
      loop: "{{ users }}"

8,Ansible指定hosts文件

Ansible通过**主机清单(Inventory)**管理目标服务器,其默认路径为/etc/ansible/hosts。但在实际应用中,常需根据项目需求指定不同的hosts文件。以下是2种常用方法及具体操作示例:

    1、通过命令行参数-i即时指定(推荐)

        适用场景:临时使用特定主机清单文件,灵活性最高。
        操作方法:在ansibleansible-playbook命令中通过-i参数指定路径。 bashbash

        单文件指定:

        ansible all -i /path/custom_hosts -m ping

        目录指定:(自动合并目录下所有文件)

        ansible-playbook -i inventory/prod/ playbook.yml

    2,通过ansible.cfg 配置文件指定(改了之后就永久生效了)

        在ansible.cfg 配置文件中,通过inventory参数指定hosts文件路径。ansible.cfg 文件路径查找顺序为:

  1. 环境变量ANSIBLE_CONFIG指向的配置文件。例如,执行export ANSIBLE_CONFIG=/PATH./ansible.cfg ,则优先使用该路径下的ansible.cfg 。

  2. 当前目录下的ansible.cfg 配置文件。

  3. 当前用户home目录下的.ansible.cfg 配置文件。

  4. 用软件包管理工具安装Ansible时自动生成的配置文件/etc/ansible/ansible.cfg 。

ansible.cfg 文件中设置inventory参数示例:

[defaults] 
inventory = /path/to/your/hosts_file 

回答: 使用ansible批量部署ssh免密登录时,有的节点可以直接免密,有的节点需要密码的原因可能是由于以下几个因素导致的。首先,可能是在ansible主机定义清单中,对于需要密码的节点没有正确配置ansible_ssh_pass参数,导致无法进行免密登录。其次,可能是在被管理端的主机上没有正确配置免密登录的公钥。在取消免密登录时,需要将公钥从被管理端的主机的/root/.ssh/authorized_keys文件中移除。如果免密不生效,可能是由于公钥没有正确添加到被管理端的主机上。请确保在执行ssh-keygen命令生成秘钥时,将公钥添加到被管理端的主机的/root/.ssh/authorized_keys文件中。 #### 引用[.reference_title] - *1* *2* [ansible批量部署的安装以及常用模块](https://blog.csdn.net/jinxiaopengM/article/details/106451240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ansible 安装与使用/ssh免密互信-以及解决免密不生效](https://blog.csdn.net/jiangbenchu/article/details/90714585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值