手工开发SSH-KEY工具(分发密钥批量执行分发文件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手工开发SSH-KEY工具(分发密钥批量执行分发文件)相关的知识,希望对你有一定的参考价值。

  前段时间用Shell开发一个SSH-KEY的工具,分享给网友,如果有更好的建议或改动请留言。笔者水平有限,希望大神提点。

  这个Shell脚本的功能,可以根据主机或主机组进行管理,以往可能就是一个for循环全部管理。。。。难免有些不顺手

  使用说名。


1、目录结构

[[email protected] ssh-key]# tree
.
├── bin    #<==这个就是解压后的脚本目录了
│   ├── fenfa-file.sh    #<==分发文件
│   ├── fenfa-key.sh     #<==分发key
│   └── ssh-key-cmd.sh   #<==批量执行命令
├── conf   #<==相关的配置文件目录
│   ├── spconf           #<==这里使用的sshpass提交密码,所以这是密码文件
│   └── ssh-key.conf     #<==这个就是ssh-key全部的配置文件
└── logs   #<==log功能,待开启,希望大神帮忙


2、使用必须说明

  1)授权分发密钥要安装sshpass工具,不了解的可以百度一下,3分钟就懂了

  2)使用分发到特殊路径(非root用户),你需要添加sudo权限,这里使用的是rsync

  3)批量执行命令脚本也是通过执行sudo来完成特殊命令


3、配置文件说明

[[email protected] ssh-key]# cat ./conf/ssh-key.conf  #<==配置文件的目录
# SSH-Key 
# fenfa-key config
sshCopy="/usr/bin/ssh-copy-id"   #<==指定ssh-copy-id的位置
sshPass="/usr/bin/sshpass"       #<==指定sshpass的路径
spconf="~/ssh-key/conf/spconf" #<==指定sshpass密码文件,及你远程管理用户的密码
# ssh-key host   #<==定义主机标签使用数组的方式
webgroup=(       #<==如下在webgroup中定义了两台计算机
  10.0.0.7
  10.0.0.8
)
# port
Port=22          #<==指定远程的ssh端口
# User
User=admin       #<==远程同步的账户

4、使用说明

  权限说明:

     1)建议放在对应的项目用户家目录下下面,防止普通用户使用,其他路径请修改导入配置文件的信息(. ~/ssh-key/conf/ssh-key.conf)

     2)配置文件中的用户远端必须存在,且有sudo对应权限(重要)

     3)远端用户密码必须与spconf中相同

     4)Lack of dependency support sshpass. 请安装sshpass,需要epel源


5、演示效果

   -h 指定主机  -g 指定主机组(注意要是配置文件中存在的)

分发key演示:

[[email protected] ~]# ./ssh-key/bin/fenfa-key.sh -g webgroup  
Host 10.0.0.8                                              [  OK  ]
Host 10.0.0.9                                              [  OK  ]


执行命令,命令最好用加""

[[email protected] ~]# ./ssh-key/bin/ssh-key-cmd.sh -g webgroup "hostname"
<==================10.0.0.8====================>
node-2
Connection to 10.0.0.8 closed.
<==================10.0.0.9====================>
node-3
Connection to 10.0.0.9 closed.

[[email protected] ~]# ./ssh-key/bin/ssh-key-cmd.sh -h 10.0.0.9 "hostname"  #<==也可以使用hosts解析中的名字哦

<==================10.0.0.9====================>
node-3
Connection to 10.0.0.9 closed.


分发文件:

[[email protected] ~]#  ./ssh-key/bin/fenfa-file.sh -g webgroup ./hosts /etc/hosts     
Host 10.0.0.8                                              [  OK  ]
Host 10.0.0.9                                              [  OK  ]


代码文件在附件中,如果觉得好,可以点个赞。

本文出自 “技术随笔” 博客,请务必保留此出处http://ievan.blog.51cto.com/11177578/1844049

以上是关于手工开发SSH-KEY工具(分发密钥批量执行分发文件)的主要内容,如果未能解决你的问题,请参考以下文章

ssh密钥分发与ansible部署指南

ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

使用ansible 批量分发ssh密钥

linux集群自动化搭建(生成密钥对+分发公钥+远程批量执行脚本)

ssh配置详解及公私钥批量分发

ssh-key的生成分发及配置