linux批量免密登陸
阿新 • • 發佈:2020-08-17
運用ansible進行自動化運維之前,我們需要對所有機器進行SSH認證,運用下面指令碼一鍵實現機器批量SSH免密登入,務必保證批量機器為同一使用者同一密碼。
#!/bin/bash
#批量實現SSH免密登入
#沒有則安裝expect
if ! rpm -q expect > /dev/null
then
echo "###expect 未安裝,現在安裝###"
yum install -y expect &>/dev/null
if [ $? -ne 0 ]
then
echo "###expect 安裝失敗###"
exit 1
fi
fi
#本機沒有SSH金鑰則生成
if [ ! -f ~/.ssh/id_rsa ]
then
echo "###請按3次enter鍵###"
ssh-keygen -t rsa
fi
ssh_expect () {
expect -c "set timeout -1;
spawn ssh-copy-id -f $1
expect {
"yes/no" { send -- yes\r;exp_continue;}
"password:" { send -- $2\r;exp_continue;}
eof
}";
}
[ -f hosts.txt ] && rm -rf hosts.txt
#定義 hosts.txt
cat > hosts.txt << EOF
192.168.30.128
192.168.30.129
192.168.30.130
EOF
passwd=123456789
for ip in `cat hosts.txt |awk '{print $1}'`
do
ssh_expect $ip $passwd
done