Linux 基础key验证登录SSH

需要安装ssh安装包
1> ssh-keygen -t rsa -P "" -i /root/.ssh/id_rsa.pub (默认路径也是这个)
2> ssh-copy-id 10.0.0.* (第一次登录需要验证,后面登录不需要)
3> 多台主机自动化登录,编写脚本,用SSHPASS 命令传递第一次需要的用户密码
3.1> ssh-keygen是一样
#!/bin/bash
# 
#**************************************************************************************
#Author: Noise Lys
#QQ: 578110218
#Date: 2021-05-27
#Filename: push_ssh_key.sh
#URL: https://www.cnblogs.com/noise/
#Description: The test script
#Copyright (C): 2021 All rights reserved
#**************************************************************************************
PASS=123456
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

#挑选出当前IP
IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
#挑选出当前IP的前3位
NET=${IP%.*}.

#先删除原来的key和log file
rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log

#循环ping当前IP所有的主机从10.0.0.3~10.0.0.254,ping成功将其IP存入log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
done
wait

#生成key
ssh-keygen -P "" -f /root/.ssh/id_rsa
#查询是否存在包sshpass,用来传输密码
rpm -q sshpass || yum -y install sshpass
#传输密码到IP
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP

#将log里面的所有IP存入变量,以便后续遍历传输密码和key
AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done

#把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
for n in ${AliveIP[*]};do
scp /root/.ssh/known_hosts ${n}:.ssh/
done

 

posted @ 2021-05-12 22:34  每天都在学习的自己  阅读(207)  评论(0)    收藏  举报