美文网首页Ansible
Linux_302_Ansible认证之批量免密处理

Linux_302_Ansible认证之批量免密处理

作者: 为宇绸缪 | 来源:发表于2022-11-09 21:14 被阅读0次

配置免密登录
每次执行ansible命令的时候,都需要输入ssh的认证密码,也就是root密码,如果不同的主机密码不一致,那你还得输入多次才行,因此我们可以配置如下的快捷登录方式

ansible自带的密码认证参数
可以在 /etc/ansible/hosts文件中,定义好密码即可,即可实现快速的认证,远程管理主机

参数
ansible_host      主机地址
ansible_port      端口,默认是22端口
ansible_user      认证的用户
ansible_ssh_pass  用户认证的密码

使用hosts文件的参数形式,来实现ssh认证
1、修改hosts文件,改为如下
vim /etc/ansible/hosts
[yu]
192.168.178.121 ansible_user=root ansible_ssh_pass=123456
192.168.178.122 ansible_user=root ansible_ssh_pass=123456

2、此时可以免密登录,即可自动ssh验证通过了,但是这种方式存储密码不安全
ansible yu -m command -a 'hostname'  # 此时不需要加上 -k -u root

ssh密钥方式批量管理主机
这个方式比起hosts文件的密码参数来的更安全放心

在my_linux机器上创建ssh密钥对
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1

2、此时检查公私钥文件
cd ~/.ssh && ls
id_rsa  id_rsa.pub  known_hosts

编写公钥分发脚本

mkdir /mysh
cd /mysh
vim ssh_key_send.sh

#!/bin/bash
rm -rf ~/.ssh/id_rsa*
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
SSH_Pass=123456
Key_Path=~/.ssh/id_rsa.pub
for ip in 131 132
do
    sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" 192.168.178.$ip
done
# 非交互式分发公钥命令需要用sshpass指定SSH密码,通过-o StrictHostKeyChecking=no 跳过SSH连接确认信息

执行脚本
sh ssh_key_send.sh 
然后就可以使用以下命令进行免密登录
ssh -o ' StrictHostKeyChecking=no' '192.168.178.121'
ssh -o ' StrictHostKeyChecking=no' '192.168.178.122'

此时在my_linux_01机器上再连接客户端机器就无须输入账号密码了,可以尝试使用ansible命令进行连接
vim /etc/ansible/hosts
将密码给删除
[yu]
192.168.178.121 
192.168.178.122 

ansible yu -m command -a "df -h"

此时已经无须输入密码,即可远程管理

总结
在生产环境中,ansible的连接方式,二选一即可,最好的是配置ssh公私钥免密登录
如果生产环境的要求更高,可以用普通用户去执行,再提权操作,sudo

相关文章

网友评论

    本文标题:Linux_302_Ansible认证之批量免密处理

    本文链接:https://www.haomeiwen.com/subject/ulantdtx.html