实现方法
1.假设互信主机在下面
A 10.93.131.1
B 10.93.131.2
C 10.93.131.3
D 10.93.131.4
E 10.93.131.5
F 10.93.131.6
G 10.93.131.7
2.选取10.93.131.1主机,在/usr/local/src下创建两个文件
cat >>/usr/local/src/servers <<EOF
10.93.131.1 主机密码
10.93.131.2 主机密码
10.93.131.3 主机密码
10.93.131.4 主机密码
10.93.131.5 主机密码
10.93.131.6 主机密码
10.93.131.7 主机密码
EOF
cat >> /usr/local/src/setRootUserPublicKey.sh <<EOF
#!/bin/bash
if [ "$UID" -ne "0" ];then
echo please use ROOT;
exit
fi
function MAKE_PK
{
count=`tac servers | wc -l`
while [ "$count" -ne "0" ];do
IP=`head -$count servers|tail -1|awk '{print $1}'`
PASSWD=`head -$count servers|tail -1|awk '{print $2}'`
set -x
sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no root@$IP 'mkdir -p /root/.ssh;chmod 700 /root/.ssh'
sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no root@$IP "ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa"
sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no root@$IP cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
set +x
let count--
done
chmod 644 /root/.ssh/authorized_keys
}
function LOCAL_PK
{
#mk PK of localhost
cat /root/.ssh/authorized_keys > /tmp/authorized_keys
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
cat /root/.ssh/id_rsa.pub >> /tmp/authorized_keys
}
function HANDOUT_PK
{
count=`tac ../servers | wc -l`
while [ "$count" -ne "0" ];do
IP=`head -$count servers|tail -1|awk '{print $1}'`
PASSWD=`head -$count servers|tail -1|awk '{print $2}'`
set -x
sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no root@$IP 'cat >>~/.ssh/authorized_keys' < /tmp/authorized_keys
set +x
let count--
done
}
MAKE_PK
LOCAL_PK
HANDOUT_PK
EOF
3.安装sshpass
[下载地址](https://sourceforge.net/projects/sshpass)
4.执行以下命令进行免密设置
cd /usr/local/src
sh setRootUserPublicKey.sh