• Linux企业 集群批量管理-秘钥认证


    集群批量管理-秘钥认证

    概述

    • 管理更加轻松:两个节点,通过秘钥认证形成进行访问,不需要输入密码,单向
    • 服务要求(应用场景):
      一些服务在使用前要求我们做秘钥认证
      手动写批量管理脚本
    • 名字:秘钥认证,免密码登录,双机互信
      提示:秘钥认证是单向的

    ssh秘钥认证流程(原理)

    密钥对

    公钥:public key 一般以.pub结尾

    私钥:private key

    角色 主机名 ip
    管理机 m01 192.168.28.61
    被管理节点 nfs01 192.168.28.131
    被管理节点 web01 192.168.28.7
    被管理节点 backup 192.168.28.41

    检查

    #ping
    ping 172.16.1.xxx
    
    #22端口 sshd服务开启或可以访问
    [root@m01 ~]#nmap -p22 172.16.1.131 172.16.1.7
    

    在这里插入图片描述

    创建密钥对

    ssh-keygen -t rsa

    在这里插入图片描述
    测试是否连接成功ssh 192.168.28.131 hostname
    在这里插入图片描述
    在这里插入图片描述

    1. 创建密钥对
    2. 给这密钥对进行加密码
    3. 身份证进行

    cd /root/.ssh
    在这里插入图片描述
    在这里插入图片描述
    一定要保护好私钥,如果私钥,用户名,服务器id 就不安全(密钥进行认证)

    创建1次密钥,否则多次创建密钥对会出现覆盖,认证失效
    在这里插入图片描述

    分发公钥

    • 分发公钥–》管理谁分发给谁,不需要密码,可以分发给公有云,私有云,虚拟机都可以进行连接
    • ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.28.131
      在这里插入图片描述
      在这里插入图片描述
      检查
      在这里插入图片描述
      在这里插入图片描述
      ssh-copy-id 后公钥被存放在对方的服务器的用户的家目录下面的.ssh下面

    自动化创建密钥对

    root@m01 ~]#ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘’

    • -发用于指定私钥的位置
    • -P 密码短语,设置为空

    在这里插入图片描述

    自动化分发公钥

    阻碍:密码

    - 安装密码提示公钥
    
      yum install -y sshpass
    
    sshpass命令基本使用
    -p指定密码
    sshpass -p123 ssh 192.168.28.7 hostname -I
    192.168.28.7 172.16.1.7
    
    - 使用sshpass 与ssh-copy-id分发给公钥
    - sshpass -p1    ssh-copy-id  192.168.28.131
    

    在这里插入图片描述
    在这里插入图片描述
    直接回车创建完成!!!

    sshpass 与ssh-copy-id的时候如果第一次连接,提示yes/no,sshpass失效了

    • sshpass适用于相给ssh相关命令提供密码:ssh,scp,ssh-copy-id

    • expect(语言)用与非交互式判断及认证

    • 阻碍:第1次连接的时候提示yes/no,主机密钥信息检查,输入yes后存放到~/.ssh/know_hosts

    在这里插入图片描述
    解决思路:临时取消即可,连接的时候不检查主机信息

    -o StrictHostKeyCheckin=no 临时不检查主机信息

    sshpass -p1 ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChencking=no 192.168.28.41

    执行脚本

    [root@m01 ~]#vim /server/scripts/fenfa.sh
    
    #/bin/bash
    #author:wulin
    #version: v1
    #desc:一键进行创建密钥对,并且分发密钥
    
    #var
    pass=123
    ips="192.168.28.7 192.168.28.131 192.168.28.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
    -- 插入 --        
    

    测试自动化创建密钥的脚本结果
    在这里插入图片描述再次执行脚本:
    在这里插入图片描述
    检查脚本:

    在这里插入图片描述
    执行脚本:
    在这里插入图片描述
    更多内容请关注小编!!!

  • 相关阅读:
    C#.NET CORE .NET6 RSA 私钥签名 公钥验签(验证签名) ver:20230614
    屏幕显示技术进化史
    【DDR3 控制器设计】(2)DDR3 初始化测试
    闲杂篇(一)vs2017 c语言、c++从一个函数返回多个参数给主函数|c++函数之间结构体如何传递参数
    CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021
    Linux学习笔记14—IO多路复用:select/poll/epoll与Reactor模式
    【HAL库】STM32CubeMX开发----STM32F407----CAN通信实验
    通付盾Web3专题 | 智能账户:数字时代基础单元
    JavaWeb基础(一)——Tomcat介绍
    掏空了各大搜索引擎,整理了154道Java面试题!
  • 原文地址:https://blog.csdn.net/2302_78067597/article/details/139863773