ping 主机 测试是否网络通畅
ping -c1 W1 192.168.199.199
下载epel源并更新yum仓库
wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
yum -y clean all
yum makecache
安装sshpass工具
yum -y install sshpass
无交互生成密钥
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P “”
测试密钥是否生成
test -f ~/.ssh/id_rsa
if [ $? -ne 0 ];then
fi
分发密钥
ssh-copy-id root@192.168.111.130
分发密钥会有交互,使用expect解决
先安装expect
yum -y install expect
案例:ips.txt 中是 要使用的IP
while read line
do
pass=QZY143269
/usr/bin/expect <<-EOF
spawn ssh-copy-id root@$line
expect { #注意:expect 与 { 中间一定要加空格
“yes/no” { send “yes\r”; exp_continue }
“password:” { send “$pass\r” }
}
expect eof
EOF
done<ips.txt
测试ssh 免密登录
ssh root@192.168.111.130
出现 Last login: Wed Jun 9 16:59:08 2021 成功
完整代码 确保安装了sshpass工具
#!/usr/bin/bash
>ips.txt
#这里将需要的主机IP 生成文件,如果有ip文件就不需要
for i {160..162};then
do
ip=192.168.111.$i
{
# 检测ip,可以ping通的放入文件待用
ping -c1 W1 $ip
if [ $? -eq 0 ];then
echo $ip >> ips.txt
fi
}&
done
#检测是否有密钥文件,没有则生成
test -f ~/.ssh/id_rsa
if [ $? -ne 0 ];then
#无交互生成密钥
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P “”
fi
while read line
do
pass=QZY143269
/usr/bin/expect <<-EOF
spawn ssh-copy-id root@$line
expect { #注意:expect 与 { 中间一定要加空格
“yes/no” { send “yes\r”; exp_continue }
“password:” { send “$pass\r” }
}
expect eof
EOF
done<ips.txt
经测试代码可用,有问题可讨论