学习记录:服务器之间相互免密
需要用到一个脚本和一个用来存储IP地址的文件
把需要做免密的IP写到一个hostlist.txt的文件里面,例如:
192.168.0.1
192.168.0.2
192.168.0.3
下面我们来编写远程免密脚本
#!/bin/bash
#Author: xueshan
#Created time: 2022/08/04 14:44
#Release: 1.0.1
#Script Description: server avoid close
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keygen -t rsa
else
echo "id_rsa has created ..."
fi
yum -y install expect
while read line
do
user="root"
ip=`echo $line | cut -d " " -f 1`
passwd="123456"
expect <<EOF
set timeout 10
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$passwd\n" }
}
expect "password" { send "$passwd\n" }
EOF
done < hostlist.txt
这里需要注意的是,脚本和hostlist.txt文件需要放在同一个路径下,如果hostlist文件放在其他的路径,则
done < hostlist.txt 需要在hostlist.txt前面加上文件的绝对路径!
有几个需要做免密的服务器,就要在对应的每一个服务器上面都运行这个脚本,并且需要携带hostlist.txt文件,注意,文件内IP地址要一致哦!
在我们执行完脚本之后,输入
ssh ip #ip是咱们做好免密的服务器IP.
如果没有提示输入密码,即视为成功(部分服务器需要在第一次远程登录的时候需要输入一次密码,做好免密之后就不需要再次输入)。