day-36 综合架构远程管理⑦

00.课程介绍部分
    1.远程管理服务概念介绍
    2.远程管理远程连接原理   加密方式 私钥-公钥
    3.远程管理登录主机方式
        a 基于密码登录方式
        b 基于秘钥登录方式   原理  实现 部署方式
    4.远程管理服务配置文件
    5.远程服务入侵防范配置
    6.批量远程服务部署       ansible  nginx  zabbix
01.课程知识回顾
    1.实时传输数据的概念
        传输方法一:定时任务备份
        传输方法二:实时传输备份
        原理:
        1.实时监控数据  inotify
        2.传输数据      rsync
        3.实时同步传输  inotify+rsync
    2.数据监控软件 inotify
        作用:监控目录数据变化
        第一步:安装软件
            yum install -y inotify
        /usr/bin/inotifywait  监控目录数据的变化
        /usr/bin/inotifywatch 统计目录产生变化的次数
        
        第二步:软件使用方法
            --exclude 排除数据不进行监控  --excludei 忽略大小写
            -m        一直对目录进行监控
            -r        递归
            -format   输出数据信息格式  %w(路径) %f(数据信息) %e(事件) %T(时间)
            -timefmt  时间格式
            -q        某些信息不进行显示
            -e        指定监控什么事件
        inotify监控数据变化命令 -- 实现数据变化实时同步
        inotifywait -mrq  --format "%w%f" -e create,delete,move,close_write /data
    3.实现实时传输数据
        利用脚本实现
        利用软件实现 sersync
        压缩包安装  直接解压
        rz -y
        unzip解压
        mv移动到指定目录
        编辑配置文件 /usr/local/sersync/conf/confxml.xml
        cd /usr/local/sersync/bin
        ./sersync -dro /usr/local/sersync/conf/confxml.xml
昨日作业:
    编写sersync启动脚本   
    编写脚本思路:
    第一步:如何启动服务和关闭服务
    启动:
    sersync -dro /usr/local/sersync/conf/confxml.xml
    停止:
    killall sersync
    第二步:编写脚本
    [root@nfs01 ~]# cat /server/scripts/sersyncd 
    #!/bin/bash
    export PATH=$PATH:/usr/local/sersync/bin/

    # 启动服务
    if [ "$1" == "start" ]
    then
       sersync -dro /usr/local/sersync/conf/confxml.xml
    elif [ "$1" == "stop" ]
    then
       killall sersync
       sleep 1
       killall sersync
    elif [ "$1" == "restart" ]
    then
       killall sersync
       sleep1
       sersync -dro /usr/local/sersync/conf/confxml.xml
    else
       echo "pls input: start|stop|restart"
    fi
    完善: case 函数

==============================================================================================
    ps:杀进程三种放肆
    1.kill
    用法:kill pid          ---进程杀死会有提示信息
    2.killall
    用法:killall sersync   ---进程杀死会有提示信息
    3.pkill  
    用法:pkill 进程名       ---模糊匹配进程名称然后
    特殊用法:tomcat --- jave程序
    kill -9 进程号          ---强制杀进程
===============================================================================================
03.远程管理服务介绍
    SSH:   服务端口  22   对远程传输数据进行加密   默认支持root用户远程连接
    telnet:服务端口  23   对远程传输数据明文显示   默认禁止root用户远程连接
04.远程服务通讯原理:
    01.客户端  -->服务端     建立三次握手
    02.客户端  -->服务端     SSH远程连接请求
    03.服务端  -->客户端     SSH远程连接确认信息  确认是否建立连接/确认是否接受公钥因信息
    04.客户端  -->服务端     发送确认连接信息
    05.服务端  -->客户端     发送公钥信息         /etc/ssh/公钥信息
    06.客户端  -->服务端     接受公钥保存 进行确认 ~/.ssh/known_hosts
    07.服务端  -->客户端     询问连接密码信息
    08.客户端  -->服务端     登录密码信息
    09.服务端  -->客户端     最终确认
    ps:基于密码建立远程通讯过程
05.远程服务建立方式
    a 基于密码登录方式
    b 基于秘钥登录方式  私钥 公钥


补充:秘钥作用
1.利用秘钥对数据信息进行加密处理
2.利用秘钥信息进行用户身份认证


    基于秘钥登录方式原理过程:
    01.管理端   -->被管理端   管理端创建秘钥对,将公钥进行发送
    02.管理端   -->被管理端   发送远程连接请求
    03.被管理端 -->管理端     进行公钥质询
    04.管理端   -->被管理端   响应公钥质询信息
    05.被管理端 -->管理端     公钥质询结果确认
06.基于秘钥连接配置过程
    第一步:创建秘钥对信息   管理端服务器(10.0.0.61)
            #ssh-keygen -t dsa
            #ll ~/.ssh/
            total 12
            -rw------- 1 root root 668 Aug 20 11:16 id_dsa
            -rw-r--r-- 1 root root 600 Aug 20 11:16 id_dsa.pub
            -rw-r--r-- 1 root root 171 Aug 20 10:42 known_hosts

    第二步:将公钥进行发送  管理端服务器(10.0.0.61)
            ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31

    第三步:进行基于秘钥登录连接测试
            ssh 172.16.1.31 hostname

    需求:管理端(10.0.0.61)  ---多台被管理端需要管理  100台
    如何批量分发公钥  ---脚本

    for ip in {1..100}
    do 
        ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.$ip
    done

问题:如和免交互批量分发公钥
01.不要输入yes
ssh 172.16.1.31 -o StricHostKeyChecking=no
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31 -o StricHostKeyChecking=no

==================================================================================
    补充:理解分发公钥原理过程 ssh-copy-id
    1.利用ssh和远程主机建立连接
    2.将本地公钥文件信息传输到远程主机上
    3.远程主机收到公钥信息 会保存在 ~/.ssh/autuorized_keys
===================================================================================

02.不要输入密码信息
    yum install -y sshpass
    sshpass - noninteractive ssh password provider (提供一个ssh密码信息, 进行非交互ssh连接)
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7 -oStrictHostKeyChecking=no

编写免交互批量分发公钥脚本
    #!/bin/bash
    #创建秘钥对
    if [ ! -f /root/.ssh/id_dsa ]
    then
        ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" >/dev/null
        echo "创建秘钥对"    [ok]
    else
        echo "创建秘钥对"    [false]
    fi

    #批量分发公钥信息
    for i in 7 31 41
    do 
        sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.$i -o StrictHostKeyChecking=no &>/dev/null
    if [ $? -eq 0 ]
        echo  "172.16.1.$i 发送公钥"     [ok]
    else
        echo  "172.16.1.$i 发送公钥"     [false]
    fi
    done

编写免交互批量检查脚本
    #!/bin/bash
    #检查公钥是否分发成功
    for i in 7 31 41
    do 
        ssh 172.16.1.$i hostname &>/dev/null
    if [ $? -eq 0 ]
    then
        echo  "172.16.1.$i 测试"     [ok]
    else
        echo  "172.16.1.$i 测试"     [false]
    fi
    done
07.课程知识总结:
    1.远程服务概念介绍
    2.远程ssh服务建立远程连接原理
    3.远程ssh服务连接方式
        a 基于密码信息连接
        b 基于秘钥方式
    4.基于秘钥配置过程
        a 创建秘钥对
        b 分发秘钥
    5.如何批量分发秘钥
      解决交互问题
作业:
01. 如何利用xshell软件实现基于秘钥方式连接虚拟主机
02. 批量分发秘钥时, 每台主机密码不一样, 每台主机远程服务端口不一样
        m01   172.16.1.61  root  654321  ssh服务端口:22
        web01 172.16.1.7   root  123123  ssh服务端口:22
        nfs01 172.16.1.31  root  321321  ssh服务端口:52113
        backup172.16.1.41  root  321321  ssh服务端口:52114

        vim /etc/ssh/sshd_conf
        17 #Port 22
        systemctl restart sshd

你可能感兴趣的:(day-36 综合架构远程管理⑦)