应用场景:我们使用ansible自动化进行发布,ssh连接需要验证,通过该脚本可以实现非交互式的产生秘钥,并把公钥发送给其他机器,直接实现免密交互
rpm -q sshpass &>/dev/null || yum install sshpass -y
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -P '' -q
export SSHPASS=123456
while read ip
do
sshpass -e ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" $ip
done<hosts.list
#过程详解
#1、安装sshpass工具,sshpass是一个免交互式的ssh登录工具,首先判断是否安装了该工具
#2、判断主机是否存在私钥,不存在,则通过ssh-keygen生成私钥
#-f:指定私钥存放位置,-P 指定密码 -q silence,安静的意思
#export指定sshpass的系统变量,也就是密码
#通过循环读入你需要通过ssh连接的主机,主机ip写入到hosts.list中,一行一个ip即可
#while循环逐行处理文本很有优势
#通过ssh-copy-id 复制公钥到其他需要被连接主机