5.服务器间自动化创建与分发密钥服务

使用工具VMware17.0
Xshell 7.0
CentOS7.0
sersync2.5.4
参考资料
  1. 为什么要实现自动创建和分发密钥服务
    在我们工作的日常运营和维护服务器的过程中, 基本上都是几十上百台服务器需要运维, 如果一个命令需要在一百台服务器上执行, 一台一台手动执行的效率太低, 这时我们通过自动创建和分发密钥服务来进行命令分发, 在管理机上执行一次命令即可将这条命令同被分发到被管理节点上

  2. 自动创建和分发密钥服务的实现思路
    在这里插入图片描述

  3. 手动实现密钥认证

    # m01管理机检查22端口是否开启ssh服务
    nmap -p22 172.16.1.31 172.16.1.7
    

    在这里插入图片描述

    # 管理机m01创建密钥对,通过rsa方法对数据进行加密 (回车+回车+回车)
    ssh-keygen -t rsa
    # 管理机m01分发公钥到被管理节点nfs01
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.31
    # 管理机m01测试能否免密访问被管理节点nfs01并执行命令
    ssh 10.0.0.31 hostname
    

    在这里插入图片描述

  4. 自动创建密钥

    # 管理机m01删除之前手动创建的密钥对(可选)
    rm -f ~/.ssh/id_rsa*
    # 管理机m01自动化创建密钥(-f用于指定私钥的位置,-P 密码短语设置为空)
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
    # 管理机m01安装sshpass(用于给ssh相关的命令提供密码)
    yum install -y sshpass
    # 管理机m01使用sshpass命令(-p指定密码root)并分发公钥到被管理节点10.0.0.7
    # 注意: 第1次远程的提示 yes/no,主机密钥信息检查,输入yes后存放到~/.ssh/known_hosts, 解决思路是使用 -o StrictHostKeyChecking=no 临时取消即可,连接的时候不检查主机信息
    sshpass -proot ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no 10.0.0.7 
    ssh 10.0.0.7 hostname
    

    在这里插入图片描述

  5. 编写自动化创建与分发脚本

    # 管理机m01删除之前已创建的目录
    rm -rf .ssh/
    
    # 管理机m01编写自动化创建与分发脚本
    vim /server/scripts/fenfa.sh
    ----------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 一键创建密钥对 分发密钥对
    
    # [配置-主机密码]
    pass=root
    # [配置-主机IP地址]
    ips="10.0.0.7 10.0.0.31 10.0.0.51"
    # [配置-引入颜色]
    . /etc/init.d/functions
    
    # [配置-待完善配置]
    # 判断是否联网或者是否可以使用yum
    # 加入判断sshpass命令是否存在, 如果不存在则安装
    
    # [配置-创建密钥对]
    if [ -f ~/.ssh/id_rsa ] ;then
    	echo "密钥对已创建"
    else
    	echo "密钥对创建中"
    	ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/null
    	if [ $? -eq 0 ];then
    			action "密钥创建成功" /bin/true
    	else
    			action "密钥创建失败" /bin/false
    	fi
    fi
    # [配置-通过循环发送公钥到被管理节点]
    for ip in $ips
    do
    	sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no $ip &>/dev/null
    	if [ $? -eq 0 ];then
    			action "公钥已发送至主机 $ip" /bin/true
    	else
    			action "公钥未发送至主机 $ip" /bin/false
    	fi
    done
    ---------------------------------------- 
    :wq
    
    # 管理机m01执行脚本
    sh /server/scripts/fenfa.sh
    # 管理机m01检查是否成功
    ssh 10.0.0.7 hostname
    ssh 10.0.0.31 hostname
    

    在这里插入图片描述

  6. 编写自动化检查脚本

    # 管理机m01创建检查脚本
    vim /server/scripts/check.sh
    ----------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 批量在所有机器上执行命令
    for ip in 10.0.0.7 10.0.0.31   
    do
        ssh  $ip  hostname 
    done
    ----------------------------------------
    :wq
    
    # 管理机m01执行脚本
    sh /server/scripts/check.sh
    

    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值