【SSH项目实战】脚本密钥的批量分发与执行
来源:互联网 发布:华为机顶盒 mac地址 编辑:程序博客网 时间:2024/05/16 17:54
–本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/chensiqiqi/
【企业案例】
公司来了8台新服务器,计划组成一个小规模集群架构;其中有一台服务器作为批量管理服务器使用,其余7台则是业务架构所需。现在先由你来负责服务器的前期配置工作,
现要求如下:
- [x] 从管理服务器ssh连接到其他任何服务器时进行免密码的密钥认证,要求进行批量分发。(脚本实现批量分发)
- [x] 由于没有DNS解析服务器,所以各个服务器需要进行hosts的服务器地址解析,因此,需要进行/etc/hosts文件的批量分发(ansible实现文件批量分发)
- [x] 新服务器初期需要做简单的优化(服务器优化脚本)和yum仓库的搭建(epel.repo源)。(ansible实现脚本的批量分发和批量执行)
环境准备
操作系统
[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
内核版本
[root@m01 ~]# uname -r
2.6.32-642.el6.x86_64
主机网络参数设置:
一,开始部署ssh密钥的批量分发
第一步:开始安装sshpass免交互工具并进行SSH-key的批量分发
下载epel源并更新yum仓库
[root@m01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[root@m01 ~]# yum -y clean all
[root@m01 ~]# yum makecache
安装sshpass工具
[root@m01 ~]# yum -y install sshpass
第二步:创建密钥对文件
免交互创建密钥对
[root@m01 ~]# 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:
4d:01:91:98:be:02:89:ab:ce:63:4f:81:e3:ab:0b:f8 root@m01
The key’s randomart image is:
+–[ DSA 1024]—-+
| oo+. |
| o . . |
| … . |
|. + . o |
| + o .S . |
|+ . o . |
|+… |
|++o |
|*=E. |
+—————–+
[root@m01 ~]# ls ~/.ssh/
authorized_keys id_dsa id_dsa.pub known_hosts命令说明:
ssh-keygen:生成密钥对命令
-t:指定密钥对的密码加密类型(rsa,dsa两种)
-f:指定密钥对文件的生成路径包含文件名
-P(大写):指定密钥对的密码
第三步:免交户方式分发公钥
[root@m01 ~]# sshpass -p “ssh登录密码” ssh-copy-id -i ~/.ssh/id_dsa.pub “-o StrictHostKeyChecking=no root@172.16.1.31”
Now try logging into the machine, with “ssh ‘-o StrictHostKeyChecking=no root@172.16.1.31’”, and check in:.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
[root@m01 ~]#
命令说明:
sshpass:专为ssh连接服务的免交户工具
-p :指定登录的密码
ssh-copy-id:自动分发公钥的工具
-i:指定公钥路径
-o StrictHostKeyChecking=no :不进行对方主机信息的写入(第一次ssh连接会在know_hosts文件里记录)
第四步:测试ssh密钥认证情况
[root@m01 ~]# ssh root@172.16.1.31 #测试成功,免密码ssh连接
Last login: Tue Mar 14 21:49:58 2017 from 172.16.1.1
[root@nfs01 ~]#
第五步:编写ssh密钥对免交户批量分发脚本
# /bin/bash # author:Mr.chen # 2017-3-14 # description:SSH密钥批量分发User=rootpassWord=##Linux登录密码function YumBuild(){echo "正在安装epel源yum仓库,请稍后..."cd /etc/yum.repos.d/ &&\[ -d bak ] || mkdir bak[ `find ./*.* -type f | wc -l` -gt 0 ] && find ./*.* -type f | xargs -i mv {} bak/wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/nullyum -y clean all &>/dev/nullyum makecache &>/dev/null}echo "正在进行网络连接测试,请稍后..."ping www.baidu.com -c2 >/dev/null ||(echo "无法连同外网,本脚本运行环境必须和外网相连!" && exit)[ $# -eq 0 ] && echo "没有参数!格式为:sh $0 参数1...n" && exit rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/nullif [ $? -gt 0 ];then YumBuild yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)fi[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.sshecho "正在创建密钥对...."rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pubssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/nullfor ip in $*do ping $ip -c1 &>/dev/null if [ $? -gt 0 ];then echo "$ip无法ping通请检查网络" continue fi sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no ${User}@$ip" &>/dev/null echo "$ip 密钥分发成功"done
第六步:脚本分发测试
[root@m01 yum.repos.d]# sh /server/scripts/ssh_key.sh 172.16.1.5 172.16.1.6 172.16.1.7 172.16.1.8 172.16.1.51 172.16.1.31 172.16.1.41 172.16.1.61
正在进行网络连接测试,请稍后…
正在创建密钥对….
172.16.1.5无法ping通请检查网络
172.16.1.6无法ping通请检查网络
172.16.1.7 密钥分发成功
172.16.1.8 密钥分发成功
172.16.1.51无法ping通请检查网络
172.16.1.31 密钥分发成功
172.16.1.41 密钥分发成功
172.16.1.61 密钥分发成功备注:
故意少开了3台,脚本测试成功。
转载自http://www.cnblogs.com/chensiqiqi/p/6554055.html
- 【SSH项目实战】脚本密钥的批量分发与执行
- 批量配置SSH 免密钥登录脚本
- ssh批量分发数据
- ssh密钥的生成与使用
- ssh无密钥登陆脚本
- ssh密钥与git
- 使用不同的SSH密钥执行git命令
- 批量ssh执行命令
- linux ssh scp expect/密钥 自动登录并自动执行脚本
- HGDB批量执行psql命令的脚本
- SSH架构搭建与项目实战
- ssh密钥的生成
- ssh密钥的使用
- SSH的密钥转换
- 批量执行SQL脚本
- 批量执行SQL脚本
- shell脚本使用ssh命令连接主机,自动创建目录,分发程序,执行命令
- ssh 密钥访问机器的脚本 (适合不想用密码访问ssh的懒人)
- 深度学习的一个有意思的应用: 通过一张图片讲故事
- 创建以点开头的文件或文件夹
- CSS3 2D平移,旋转,缩放,倾斜
- 2017.08.30工作日记
- Atom软件
- 【SSH项目实战】脚本密钥的批量分发与执行
- Shiro 自定义realm认证
- I/O流--File类
- Java线程池
- Ajax基础详解1
- 怎样辨别一个处理器的架构?
- 线段树学习笔记
- Http请求
- JVM内存管理