linux 批量ssh认证

<pre name="code" class="sql">redis01:/root# cd .ssh
-bash: cd: .ssh: No such file or directory
redis01:/root# pwd
/root


redis01:/root# cd .ssh
redis01:/root/.ssh# ls
known_hosts

redis01:/root/.ssh# ls
id_rsa  id_rsa.pub  known_hosts


自动化ssh 脚本:


#root用户初始化脚本,initroot.sh
if [  ! $# -eq 2  ] ;then
echo "请输入用户密码以空格分开"
exit
else
ssh-keygen -t rsa
#用户名
uname="$1"
#密码
passwd="$2"
fi


#执行检测并安装expect模块
ep=`rpm -qa | grep expect` 

if [ -z $ep   ] ; then
 echo "检测到你的系统,没有安装expect模块,准备执行安装"
 sleep 2
 yum install -y expect

else
 echo "已经安装expect模块,3秒后,开始执行ssh文件同步"
 sleep 3
fi



#公钥无ssh认证模块
cat hosts | while read host
do



echo "当前正在向$host上传输ssh文件"
expect <<EOF
spawn  scp -r .ssh/  $host:/$uname 
expect {
"*yes/no" {send "yes
" ;exp_continue}
"*password:" {send "$passwd
" ;exp_continue  }
}


EOF





echo "当前正在$host上进行公钥认证....."
sleep 2
expect <<EOF
spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host 
expect {
"*yes/no" {send "yes
" ;exp_continue}
"*password:" {send "$passwd
" ;exp_continue  }
}


EOF

echo "认证成功...."

done




#切换root权限进行hosts文件分发



echo "同步本机的hosts文件到各个机器上"

sleep 1

#同步本机的hosts文件到其他各个机器上

cat hosts | while read host
do

scp -r /etc/hosts $host:/etc/


done


echo "同步hosts文件完毕"



A->B B-> 相互信任  A 脚本需要ssh-keygen -t rsa  B不需要



                                    
原文地址:https://www.cnblogs.com/hzcya1995/p/13351252.html