ssh免密,批量免密脚本

一.原理:ssh免密的原理简单说就是通过ssh-keygen生成一对密钥对,然后把公钥拷贝到对端服务器,然后用私钥就可以打开对端的公钥,就能免密码连接对端
二.使用步骤:
步骤1:生成密钥对
ssh-keygen -f ~/.ssh/id_rsa_tom -P ""
-t 指定要创建的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型,默认是rsa类型
-f 选项指定生成的私钥的文件名,建议生成的时候指定一个非id_rsa的名字,因为别人重新生成了默认的密钥对,就会把原先同名的密钥对覆盖掉,原先的免密配对也就失效了
-P 指定二次加密的密码
使用 ssh-kengen 会在~/.ssh/目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是:
id_rsa      #私钥
id_rsa.pub  #公钥

步骤2:把密码拷贝到远端
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_tom.pub root@10.0.0.31
-o StrictHostKeyChecking=no ssh连接时不会提示是否连接的交互 
-i 指定要传输的公钥

步骤3:步骤2输入后,还是要交互的方式输入远端的root用户的密码,如果不想交互的方式输入密码,就需要用到sshpass
yum -y install sshpass
sshpass -p "1" ssh-copy-id -o StrictHostKeyChecking=no  -i ~/.ssh/id_rsa_tom.pub root@10.0.0.31
sshpass -p:后面跟的就是远端主机的root用户密码

三.如果有多台机器需要拷贝,可以使用脚本进行拷贝
cat copykey.sh
#!/bin/bash
#author: tom
#desc: 生成密钥对,批量拷贝公钥到远端机器

#1.定义变量
private_key="/root/.ssh/id_rsa_tom"
public_key="/root/.ssh/id_rsa_tom.pub"
log_file="/server/scripts/copysshkey/copy.log"
hosts="/server/scripts/copysshkey/hosts.txt" #hosts.txt文件里内容为多行,每行都是IP:密码
#2.生成密钥对
echo "-------------------------------执行开始时间`date +%F-%T`" >> ${log_file}
if [ -f $private_key -a -f $public_key ];then
    echo "密钥对和公钥都已经存在" >> ${log_file}
else
    #防止出现公钥或私钥缺失的情况发生
    rm -rf $private_key $public_key
    
    ssh-keygen -f $private_key -P "" 
    echo "新生成密钥对" >> ${log_file}
fi
#3.拷贝公钥到远端
while read line
do
    ip=`echo ${line}|awk -F':' '{print $1}'`
    passwd=`echo ${line}|awk -F':' '{print $2}'`
    sshpass -p ${passwd} ssh-copy-id -o StrictHostKeyChecking=no -i ${public_key} root@${ip} &> /dev/null 
    if [ $? -eq 0 ];then
        echo "------------------------------------" >> ${log_file}
        echo "拷贝到 ${ip} 成功" >> ${log_file}
        #验证免密是否成功,注意ssh -n,不加-n,while在第一个循环后会停止循环
        checkResult=`ssh -n ${ip} -i ${private_key} hostname -I|awk '{print $1}'`
        echo "验证连接获取IP: $checkResult" >> ${log_file}
    else
        echo "拷贝到 ${ip} 失败" >> ${log_file}
    fi
done < ${hosts}
echo "-------------------------------执行结束时间`date +%F-%T`" >> ${log_file}

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值