linux下SSH服务利用shell脚本实现密钥的批量分发与执行

SSH项目利用shell脚本实现密钥的批量分发与执行

1 ssh密钥的批量分发

开始安装sshpass免交互工具并进行SSH-key的批量分发

1.1 下载epel源并更新yum仓库

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y clean all
yum makecache

1.2 安装sshpass工具

yum -y install sshpass

2 创建密钥文件

2.1 免交互创建密钥对

[email protected]1:~#:ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Ey9bwNHOjrvyfNvNoJCAbUa9OZXrmy8xxB+DYMAz0JU [email protected]1
The key‘s randomart image is:
+---[DSA 1024]----+
| .+.ooo |
| =oE... |
| .+==o. |
| + B*.o |
| . = S++. o |
| o ..O+ . |
| +..o. |
| ....o= + |
| o+o=+o o |
+----[SHA256]-----+

# 查看是否创建成功
[email protected]-1:~#:ll .ssh/
total 12
-rw------- 1 root root 751 Apr 28 16:04 id_dsa
-rw-r--r-- 1 root root 604 Apr 28 16:04 id_dsa.pub
-rw-r--r-- 1 root root 515 Apr 27 15:56 known_hosts

2.2 参数说明

ssh-keygen:生成密钥对命令
-t:指定密钥对的密码加密类型(rsa,dsa两种)
-f:指定密钥对文件的生成路径包含文件名
-P(大写):指定密钥对的密码(密语)

程序同时要求输入一个密语字符串(passphrase),空表示没有密语(主机密钥的密语必须为空)。
密语和口令(password)非常相似,但是密语可以是一句话,里面有单词、标点符号、数字、空格或任何你想要的字符。
好的密语要30个以上的字符,难以猜出,由大小写字母、数字、非字母混合组成。密语可以用 -p 选项修改。
丢失的密语不可恢复。如果丢失或忘记了密语,用户必须产生新的密钥,然后把相应的公钥分发到其他机器上去。

2.3 支持的非对称加密算法

1.rsa,基于大数的质数分解难度的算法,一般都是2048位
2.dsa,基于离散对数的难度,1024位
3.ecdsa,椭圆曲线算法,支持256,384,521位

3 免交互方式批量分发公钥

#!/bin/bash
#    create key pair
rm -fr /root/.ssh/id_dsa*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
# fenfa key file
for ip in 31 41
do
echo "=======Batch the file to the host 172.16.1.$ip=========="
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no [email protected]$ip"
echo -e "##########################END##########################\n"
done

参考:https://blog.csdn.net/qq_34672033/article/details/89645010

原文地址:https://www.cnblogs.com/sandshell/p/11701648.html

时间: 2024-11-08 08:38:24

linux下SSH服务利用shell脚本实现密钥的批量分发与执行的相关文章

Linux基础之-利用shell脚本实现自动监控系统服务

目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件:1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-id -i web1); 需要的文件:    1. python邮件发送工具: 2. nfc.sh监控脚本,监控nginx及nfs服务状态,并调用mail发送工具通知用户: 3. nfc-install.sh监控部署脚本,运行在主机,为子机配置文件,执行命令

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*

利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移动到多个目录下,这个目录是图片的上传日期(就是文件属性中的修改日期filemtime)组成的.比如2012-12-20的修改日期,那么现在就该放在/data/images/2012/12/20的目录下. php有很容易的操作文件的函数,可以方便完成.当然也可以利用shell脚本完成. 用shell的

Linux含有SSH服务小于10M的裁剪技巧56

一.远程登录协议 1.telnet:远程登录,tcp/23端口的应用层协议 C/S架构 S:telnet服务器 C:telnet客户端 2.SSH:Secure Shell,tcp/22端口的应用层协议 通信过程及认证过程是加密的,主机需要认证 Server端发送Secret key给Client端的Public Key对照: 用户认证过程加密 数据传输过程加密 3.SSH协议 v1 v2 v1已经可以被man-in-middle(中间人)攻击了 4.SSH认证过程: 基于口令认证 基于密钥认证

利用SHELL脚本实现将Oracle数据库的每日EXPDP导出文件复制到远程服务器

利用SHELL脚本实现将Oracle数据库的每日EXPDP导出文件复制到远程服务器 作者:赵全文 网名:guestart 我们有一套生产环境的Oracle数据库,虽然每天都有RMAN备份,但是也招架不住开发人员隔三差五就说要恢复几张表的前几天的数据到生产环境当中,针对这样的需求,用RMAN来恢复某几张表的数据就显的特别费劲了.于是我决定用Oracle数据库的逻辑备份工具EXPDP(数据泵导出)专门导出特定用户下的所有表的数据,并在每天凌晨4点通过LINUX操作系统的CRONTAB的计划任务定时执

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

Linux之进程管理及Shell脚本

使用!来调用过往命令 !! 重复执行上一条指令 !a 重复执行上一条以a为首的指令 !nubmer 重复执行上一条在history表中记录号码为number的指令 !-number重复执行前第number条指令 ailas abc='cd xxxxxxxxxxx/xxxxxxxx/xxxxxxxxxxxxx' unalias abc " "将一串字符当成字符串来看,可以转译特殊字符 ' '将一串字符当成字符串来看,无法转译特殊字符 ·能够返回命令执行的结果 echo `uname -a

linux下apache服务搭建

实验拓扑:                          Linux Client -----RHEL5.9(vmnet1)----------(vmnet1)                          Win7 Client 实验一:查看默认HTTP配置     找到默认红帽欢迎页面 (/etc/httpd/conf/httpd.conf ---->Include ----> /etc/httpd/conf.d  ----> welcome.conf  ----> /

利用shell脚本实现计划任务功能 V1.2

2013.05.10  mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1.0 版后(利用shell脚本实现计划任务功能),一直在想着如何解决那个最后的遗留问题"每个任务脚本中声明的函数名必须唯一不能重复,否则会导致任务函数覆盖.",无意间自问了一句为什么不能像crontab那样直接调用脚本和命令呢?这一问才让自己回忆起来,之所以用function封装任务是因为早