• 运维SRE-14 自动化批量管理


    1.批量管理基础内容-SSH服务-远程连接服务

    1.1SSH服务

    • SSH服务-OpenSSH,远程连接
    • 服务端:openssh-server
    • 客户端:openssh-clients
    openssh-7.4p1-21.el7.x86_64	
    openssh-server-7.4p1-21.el7.x86_64	#服务端
    openssh-clients-7.4p1-21.el7.x86_64	#客户端
    
    • 1
    • 2
    • 3

    1.2 OpenSSH VS Telnet

    对比OpenSSH和Telnet服务共同点区别应用场景
    OpenSSH远程连接连接时候数据加密默认使用
    Telnet服务远程连接连接时候数据未加密未来升级OpenSSH,建议先安装telnet服务,然后升级

    telnet服务端使用-了解

    yum install -y telnet-server
    systemctl start  telnet.socket
    telnet 10.0.0.31
    
    • 1
    • 2
    • 3

    1.3OpenSSH服务端配置

    1)概述

    openssh服务端软件包内容
    /etc/ssh/sshd_config #daemon守护进程/服务#openssh服务端配置文件
    /usr/lib/systemd/system/sshd.serviceopenssh服务端管理配置文件(systemctl start/stop/restart sshd)
    /usr/sbin/sshdopenssh服务启动命令

    2)服务端配置文件详解

    配置文件
    性能优化UseDNS no是否开启DNS反向解析(ip---->域名),这个选项默认开启,会导致远程连接慢
    GSSAPIAuthentication no是否开启GSSAPI认证,默认开启,开启导致远程连接慢
    安全配置Port 22配置ssh服务端口端口号,未来处于安全考虑要修改,默认22
    PermitRootLogin yes是否准许root远程登录默认是yes(ubuntu系统默认no)
    ListenAddress配置用户只能通过哪个ip连接来进入网卡,指定的本地网卡的ip地址。默认是0.0.0.0,所有用户都可以连接
    PasswordAuthentication yes是否准许通过密码登录(是否开启密码登录)
    UsePAM yes是否开启PAM认证(安全部分讲解)

    在这里插入图片描述

    1.4 Openssh客户端命令

    1)概述

    Openssh客户端核心命令作用
    scp远程传输命令
    ssh命令行远程连接工具
    sftpftp工具
    2)scp
    scp -r -P 22 /etc/ 10.0.0.31:/tmp
    -r 递归传输目录
    -P 指定ssh端口号,不指定默认是22
    
    • 1
    • 2
    • 3

    3)ssh
    a)远程连接10.0.0.41的22端口
    ssh -p 22 root@10.0.0.41
    b)远程连接到10.0.0.41的22端口执行命令hostname并返回
    ssh -p 22 root@10.0.0.41 hostname
    4)sftp

    ftp:文件传输协议,服务端口号21端口...一般用于传输数据:window+linux,类似于rz和sz
    
    window和linux之间的:
    	对于大文件推荐使用:scp/rsync/ftp传输
    	如果文件比较小:使用rz/sz即可
    sftp 命令
    xftp 图形化ftp工具
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    a)命令行

    现在在10.0.0.31机器 ,连接10.0.0.41 通过sftp
    sftp root@10.0.0.41
    
    # 上传
    put /etc/hostname #把31的/etc/hostname上传到41
    # 下载
    get /etc/hostname #把41的/etc/hostname下载到31
    
    #查看远程目录信息
    ls 
    ls -l
    
    #查看本地目录信息
    lls -l #l是local的意思
    
    #删除远程文件/目录
    rm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    b) 图形化界面版本
    xftp,xshell,winscp...

    1.5 OpenSSH密钥认证

    密钥认证:也叫免密码登录,也叫双机互信.
    目标: 
    	让linux系统之间(1台到其他所有)远程连接的时候不需要输入密码.
    	实现初步批量管理功能.
    	未来一些服务软件需要我们先部署密钥认证
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1)原理

    2)实战使用

    环境准备
    m01批量管理服务,要可以连接其他所有机器,存放密钥对
    backup被管理机器
    nfs01被管理机器
    web01被管理机器
    1.创建秘钥对
    ssh-keygen
    2.分发密钥(公钥)
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.31
    3.测试
    ssh root@10.0.0.31 hostname
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.6 Openssh密钥认证一键化部署

    1)一键流程

    1.创建秘钥对-一键
    ssh-keygen -f ~/.ssh/id_rsa -P ''
    
    2.分发公钥
    分发公钥的时候关闭主机验证功能.临时
    sshpass -pthinker ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@10.0.0.41
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2)sshpass

    替我们在需要的时候提供ssh的命令:sshpass 
    yum install -y sshpass
    
    sshpass -pthinker ssh 10.0.0.31 hostname
    
    • 1
    • 2
    • 3
    • 4

    3)一键化创建秘钥对和分发密钥

    脚本内容
    第1步创建秘钥对.
    第2步分发公钥.
    
    #!/bin/bash
    #author: hbinz
    #desc 一键自动化创建和分发公钥
    
    ip_list="10.0.0.7 10.0.0.31 10.0.0.41"
    ssh_root_pass="thinker"
    echo '------------------------------------'
    echo '1.创建秘钥'
    echo '------------------------------------'
    ssh-keygen -f ~/.ssh/id_rsa -P ''
    
    echo '------------------------------------'
    echo '2.分发 公钥'
    echo '------------------------------------'
    for ip in $ip_list
    do
    	sshpass -p$ssh_root_pass ssh_copy_id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@$ip
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4)一键化检查(执行命令)
    扩展:表示不含$0的所有参数的列表

    #!/bin/bash
    #author: Hbinz 
    #desc 批量检查脚本
    
    ip_list="10.0.0.7 10.0.0.31 10.0.0.41"
    
    echo "----------------------------------"
    echo "批量执行命令"
    echo "----------------------------------"
    
    for ip in $ip_list
    do
    	ssh root@$ip $@
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    1.7 堡垒机/跳板机

    服务端(m01)
    助手(window)
    
    • 1
    • 2

    1)服务端

    tar -zvxf teleport-linux-3.0.2.9.tar.gz -C /app/tools
    mv teleport-linux-3.0.2.9 teleport-linux
    cd teleport-linux
    ./setup.sh
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    浏览器访问:http://10.0.0.210:7190/maintenance/install
    在这里插入图片描述

    浏览器登录:http://10.0.0.210:7190/dashboard
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    注意: 这里使用秘钥认证(需要你提前创建好m01到其他所有机器的秘钥认证)或者密码认证都可以
    2)安装windows/mac助手

    ssh-copy-id原理:
    创建.ssh目录
    创建.ssh/authorized_keys文件,存放公钥.
    
    本质调用了ssh命令.
    ssh "$@" "exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && cat << .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'"
    
    cd ; #连接到对应的机器10.0.0.31,进入家目录.
    umask 077 ;临时调整umask 默认权限 目录: 700 文件:600
    mkdir -p .ssh 创建家目录下.ssh隐藏目录 #目录权限 700
    cat << .ssh/authorized_keys  #把公钥的信息写入到 对应机
    器的.ssh下面的authorized_keys文件中.这个文件权限600
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    一句话总结设计模式
    Power BI 如何使用Tooltip创建悬浮报表页 (自定义工具提示)
    java获取中文拼音
    PostgreSQL 导出数据为CSV
    【volatality 3】使用说明文档
    基于分布式 KV 存储引擎的高性能 K8s 元数据存储项目 —— KubeBrain
    目标检测——行人和骑自行车者数据集
    如何设计 API?
    StarRocks数据导入
    Flutter自定义可拖动组件
  • 原文地址:https://blog.csdn.net/Binbinhb/article/details/136239598