秘钥分发目的是在大量节点时:可节省在使用自动化运维工具(ansible,saltstack等)定义的tag标签等,不管是使用ansible-play -t tag1还是ansible-playbooks --skip-tags tag1,都要节省时间,可直接登录到该节点进行操作;后续scp命令等都使用比较方便

需要用到expect命令,配置好阿里源直接yum即可

yum install expect -y

秘钥信息(隐藏文件,使用ls -a查看)默认保存在/root/.ssh/目录下存在id_rsa,id_rsa.pub

当分发秘钥成功后会生成一个类似ansible中/etc/ansible/hosts文件

在这个文件中保存着通过秘钥认证的主机

用if语句(单分支,双分支,多分支均可)进行判断在/root/.ssh目录中是否保存之前的秘钥信息;

-e包含文件(f)和目录(d);

expect 为交互命令,{send \r}可理解为在生成秘钥行(ssh-keygen)的时候执行回车命令。

后使用for循环进行秘钥分发。注:在执行秘钥分发时可能会出现hang住的情况,此情况大概率是秘钥分发主机网络不通情况导致。

出现此情况可选加set timeout 6;表示在6秒内完成秘钥分发,如6秒内没有完成,自动跳转另一个循环。

特别注意:在使用for语句时候一定要在后面加上done,由于使用输入重定向,在最后写入eof后总感觉脚本已经完成,执行时报错,检查脚本发现少done......(粗心)


#!/bin/bash
yum install expect -y
#rm -rf /root/.ssh/*
if [ -e /root/.ssh/id_rsa ];thenrm -rf /root/.ssh/*
fi#ssh-keygen
/usr/bin/expect<<eof
spawn ssh-keygen
expect {
"(/root/.ssh/id_rsa)" {send \r;exp_continue}
"passphrase" {send \r;exp_continue}
"again" {send \r}
}
expect eof
exit
eof#ssh-copy-id
ip=192.168.10.
for i in {1..100}
do
/usr/bin/expect<<eof
spawn ssh-copy-id $ip$i
expect {
"yes/no" {send yes\r;exp_continue}
"password" {send root\r}        #root替换为你的密码
}
expect eof
exit
eof
done

自动分发秘钥脚本(复制修改ip即可使用)相关推荐

  1. java 修改ip_如何用脚本快速修改IP地址(Netsh)

    评论 # re: 如何用脚本快速修改IP地址(Netsh) 2006-03-30 15:36 david.turing (2006-03-30 15:12:48) 胡子鱼-SD(18684412) 另 ...

  2. Windows下用.bat脚本快速修改IP地址

    文章目录 一.将ip地址改为静态固定ip 1.新建一个.bat文本文件 2.将以下代码复制到文本中 3.将文本另存为(保证编码格式为:ANSI,否则运行无效) 4.以管理员身份运行(否则无效) 二.将 ...

  3. 自动重启某个网卡脚本(根据IP确定网卡)

    #! /bin/sha=`ifconfig | grep -B1 "192.168.6.88"` #echo $a b=`printf $a` #echo $bsudo -S if ...

  4. sshpass做秘钥分发,ansible做自动化运维工具

    最近公司机器的增多,顺便还要上报表系统,考虑到服务器越来越多,手工的管理显得越来的越吃力,所以打算推进公司自动化运维工具的使用. 推进的过程中,一步一个坑踩过来的.由于公司之前未运用过自动化运维工具, ...

  5. 动态秘钥分发(基于PKI)的方案论文详读

    1. 题目解析 题目动态秘钥分发由来: 分发方式:车辆从其最近的路侧单元动态地请求钥匙. 该请求通过网络基础结构安全地传播,以到达CA云,并返回密钥: 从分发方式中我们可以知道这是一种动态请求从CA中 ...

  6. 【Linux】循序渐进学运维-服务篇-SSH秘钥认证

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-服务篇的第5篇文章 文章目录 前言 为什么用密钥认证 秘钥认证流程 秘钥生成及使用 1. 交互式创建及分发秘钥 a) 生成秘钥 b) 分发秘钥 ...

  7. JWT整合springboot 自定义定时更换秘钥

    JWT整合springboot 自定义定时更换秘钥 jwt概要: JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体 ...

  8. iOS安全之RSA加密/生成公钥、秘钥 pem文件

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

  9. iOS RSA加密 以及生成公钥 秘钥 pem文件

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

最新文章

  1. 环境微生物期刊—Applied and Environmental Microbiology
  2. 八皇后问题(递归+非递归)
  3. 【ssh从零单排】eclipse和tomcat整合配置
  4. 内置函数、匿名函数,递归函数
  5. linux cut列截取工具使用示例
  6. jdk自带的Unicode转utf8工具
  7. cesium js 路径_vue2.0项目集成Cesium的实现方法
  8. power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构
  9. 倒计时1天,BDTC2016最新完整版日程公布
  10. bash shell 命令行选项的用法
  11. HTML页面中显示时间
  12. 中国医科大学网络教育学院试卷计算机,中国医科大学网络教育学院补考试卷
  13. 搜狗输入法 android 历史版本,搜狗输入法旧版
  14. Matlab加矩形窗程序,基于MATLAB结合矩形窗设计FIR滤波器
  15. PHP file_get_contents函数详解
  16. Linux-进程控制详解(进程创建+进程终止+进程等待+进程程序替换)
  17. Python创建免费Ip代理池,伪装Ip。
  18. 【web自动化测试】
  19. Seurat-单细胞文献复现第二弹-01
  20. card_list_operation.erl

热门文章

  1. MongoDB分片实战
  2. Codeforces Round #797 (Div. 3) F. Shifting String题解
  3. 推荐几个办公软件的神器
  4. 人脸识别技术及实现思路
  5. C#(pronounced: see sharp) 与 .NET
  6. element ui 控件与布局学习(自用)
  7. 可执行文件信息查看工具代码示例
  8. window文件共享访问记录清除命令
  9. C语言 收入与纳税计算
  10. 如何关掉苹果iMac开机启动声音