s34.基于key验证多主机ssh互相访问脚本

107 阅读1分钟

基于key验证多主机ssh访问

[root@ansible ~]# cat ssh_key.sh 
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-12-20
#FileName:      ssh_key.sh
#URL:           raymond.blog.csdn.net
#Description:   ssh_key for CentOS 7/8 & Ubuntu 18.04/24.04 & Rocky 8
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
#基于key验证多主机ssh互相访问
COLOR="echo -e \\033[01;31m"
END='\033[0m'
PASS=123456
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.

os(){
    OS_ID=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`
}

ssh_key_push(){
    rm -f /root/.ssh/id_rsa
    [ -e ./SCANIP.log ] && rm -f SCANIP.log
    for((i=3;i<="$END";i++));do
        ping -c 1 -w 1  ${NET}${i} &> /dev/null  && echo "${NET}${i}" >> SCANIP.log &
    done
    wait
    ssh-keygen -f /root/.ssh/id_rsa -P '' &> /dev/null
    if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ] &> /dev/null;then
        rpm -q sshpass &> /dev/null || { ${COLOR}"安装sshpass软件包"${END};yum -y install sshpass &> /dev/null; }
    else
        dpkg -S sshpass &> /dev/null || { ${COLOR}"安装sshpass软件包"${END};apt -y install sshpass &> /dev/null; }
    fi
    sshpass -p ${PASS} ssh-copy-id -o StrictHostKeyChecking=no ${IP} 

    AliveIP=(`cat SCANIP.log`)
    for n in ${AliveIP[*]};do
        sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
    done

    #把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
    for n in ${AliveIP[*]};do
        scp /root/.ssh/known_hosts ${n}:.ssh/
    done
}

main(){
    os
    ssh_key_push
}

main