ansible批量漏洞升级openssh版本

1、ansible宿主机准备好环境,并写好hosts文件

[root@oxidized ansible]# cat hosts
[all]
10.10.200.33
10.10.200.34
10.10.200.35

跑playbook之前记得提前发送秘钥
ssh-copy-id 10.10.200.33/34/35

2、下载好安装包,然后编写yml

[root@oxidized ansible]# cat loudongBD.yml
- name: 漏洞修复
  hosts: all
  tasks:
    - name: copy openssl
      copy:
        src: /openssh_upgrade_9.7/openssl-3.1.5.tar.gz
        dest: /usr/local/src/openssl-3.1.5.tar.gz
    - name: copy openssh
      copy:
        src: /openssh_upgrade_9.7/openssh-9.7p1.tar.gz
        dest: /usr/local/src/openssh-9.7p1.tar.gz
    - name: copy upgrade脚本
      copy:
        src: /etc/ansible/loudongBD_ssh.sh
        dest: /usr/local/src/loudongBD_ssh.sh
    - name:
      copy:
        src: /etc/ansible/loudongBD_ssl.sh
        dest: /usr/local/src/loudongBD_ssl.sh
    - name: openssl升级
      shell: sh /usr/local/src/loudongBD_ssl.sh
    - name: openssh升级
      shell: sh /usr/local/src/loudongBD_ssh.sh

3、两个shell脚本内容如下

openssl升级脚本:

[root@oxidized ansible]# cat loudongBD_ssl.sh
#!/bin/bash
cd /etc/yum.repos.d/ && mkdir bak
mv *.repo bak/
cat >>/etc/yum.repos.d/local.repo <<EOF
[base]
name=Nexus
baseurl=http://10.10.200.20:8081/repository/yumHosted/
enabled=1
gpgcheck=0
EOF

yum makecache fast


yum install gcc gcc-c++ openssl-devel libstdc++* libcap* pam-devel zlib-devel perl perl-IPC-Cmd -y

cd /usr/local/src/

mv /usr/lib64/openssl /usr/lib64/openssl.old

yum -y remove openssl

tar xf openssl-3.1.5.tar.gz

cd /usr/local/src/openssl-3.1.5

./config --prefix=/usr

make && make install

openssh升级脚本:

[root@oxidized ansible]# cat loudongBD_ssh.sh
 #!/bin/bash

cd  /usr/local/src/

tar xf openssh-9.7p1.tar.gz

mkdir /etc/ssh.bak

mv /etc/ssh/ /etc/ssh.bak

cd /usr/local/src/openssh-9.7p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords

make && make install

cp /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak

cp /etc/ssh/sshd_config{,.bak}

sed -i 's/^PermitRootLogin/#&/' /etc/ssh/sshd_config

sed -i '32i PermitRootLogin yes' /etc/ssh/sshd_config

chkconfig --add sshd

systemctl daemon-reload

systemctl restart sshd

4、环境准备好后,直接运行剧本即可

[root@oxidized ansible]# ansible-playbook loudongBD.yml

5、升级后检查ssh版本

[root@oxidized ansible]# ssh -V
OpenSSH_9.7p1, OpenSSL 3.1.5 30 Jan 2024

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/657483.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int** ret malloc(sizeof(int*) * numRows);*returnSize numRows;*returnColumnSizes malloc(sizeof(int) * numRows);for (int i 0; i < numRows; i) {re…

redis显示RDB error

报错问题&#xff1a;"RDB error" 是指在Redis的RDB持久化过程中出现了错误。Redis的RDB持久化是通过将内存中的数据集快照保存到磁盘中的一种方式。如果在这个过程中遇到问题&#xff0c;Redis会记录一条包含"RDB error"的日志信息。上图错误&#xff0c;…

C++ | Leetcode C++题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret(numRows);for (int i 0; i < numRows; i) {ret[i].resize(i 1);ret[i][0] ret[i][i] 1;for (int j 1; j &…

Golang | Leetcode Golang题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; func generate(numRows int) [][]int {ans : make([][]int, numRows)for i : range ans {ans[i] make([]int, i1)ans[i][0] 1ans[i][i] 1for j : 1; j < i; j {ans[i][j] ans[i-1][j] ans[i-1][j-1]}}return ans }

SpringBoot 微服务中怎么获取用户信息 token

SpringBoot 微服务中怎么获取用户信息 token 当我们写了一个A接口&#xff0c;这个接口需要调用B接口&#xff0c;但是B接口需要包含请求头内容&#xff0c;比如需要用户信息、用户id等内容&#xff0c;由于不在同一个线程中&#xff0c;使用ThreadLocal去获取数据是无法获取的…

Qt串口异步通信案例(从机线程)

文章目录 串口线程类初始化串口类打开串口并发送数据析构函数 窗口设置窗口函数实现 串口线程类 SlaveThread&#xff08;从机线程&#xff09; 目的&#xff1a;等待并响应来自主机的请求&#xff0c;然后发送预设的响应数据。 关键行为&#xff1a;线程启动后&#xff0c;通过…

AJAX基础知识

定义 Ajax 异步 JavaScript 和 XML &#xff08; async javascript and xml &#xff09;&#xff0c;使用 Ajax 技术网页应用能够快速地将数据更新呈现在用户界面上&#xff0c;而不需要重载&#xff08;刷新&#xff09;整个页面&#xff0c;这使得程序能够更快地回应用户的操…

Python机器学习 Tensorflow + keras 实现CNN

一、实验目的 1. 了解SkLearn Tensorlow使用方法 2. 了解SkLearn keras使用方法 二、实验工具&#xff1a; 1. SkLearn 三、实验内容 &#xff08;贴上源码及结果&#xff09; 使用Tensorflow对半环形数据集分 #encoding:utf-8import numpy as npfrom sklearn.datasets i…

linux系统——bg命令,linux运行的级别

在linux中可以使用bg命令&#xff0c;将进程任务置于后台执行 在这里&#xff0c;使用ping www.baidu.com命令后再使用ctrlz&#xff0c;可以将命令先暂停并保留在后台&#xff0c;jobs可以对任务进行查看 使用runlevel可以查看系统当前的运行级别

数据库自动化管理的六大等级

什么是数据库自动化管理&#xff1f; 数据库自动化管理是指通过使用工具和流程&#xff0c;在尽量减少人为干预的情况下&#xff0c;管理和执行与数据库相关的任务。主要目的当然是提高效率&#xff0c;减少人为错误&#xff0c;确保一致性&#xff0c;并解放 DBA 和开发者&am…

【乐吾乐3D可视化组态编辑器】模型类型与属性

编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 本章主要为您介绍模型的属性功能。 一个模型至少会包含一个节点&#xff08;Node&#xff09;&#xff0c;从节点类型上可以分为转换节点&#xff08;TransformNode&#xff09;、网格&#xff08;Mesh&#xff09;、实例网…

嵌入式linux系统中NFS文件系统挂载详细实现

大家好,今天主要给大家分享一下,如何利用linux系统实现NFS文件系统挂载的方式与实现。 第一:linux-NFS挂载的目的 1、掌握 Ubuntu 系统 NFS 文件共享服务的安装及配置 2. 掌握嵌入式 Linux 系统通过 NFS 共享服务和 X86 宿主机进行数据共享,文件共享的方法。 …

刷代码随想录有感(82):贪心算法——摆动序列

题干&#xff1a; 代码&#xff1a; class Solution { public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() < 1)return nums.size();int prediff 0;int curdiff 0;int res 1;for(int i 0; i < nums.size() - 1; i){curdiff nums[i 1] - nu…

DataGrip使用ssh连接数据库的操作流程

1 选择数据源种类 2 配置ssh 3 填写host、port和认证方式 我选择的密码方式&#xff0c;也可选择其他方式连接&#xff1a; 本文由博客一文多发平台 OpenWrite 发布&#xff01;

AURIX TC3xx单片机介绍-启动过程介绍3

如下的内容是英文为主,对于TC3xx芯片启动原理不清楚的,可以给我留言,我来解答你们的问题! 3.2.1 Reset类型识别 Reset类型的识别是用来判断上次的复位是Application Reset还是System Reset还是CPU0 Reset。基于复位的原因,启动软件会运行不同的分支逻辑。复位原因可以通…

格雷希尔C9对接板总成助力于新能源汽车的各种测试设备自动对接

在2024年开年比亚迪就给新能源汽车市场来了一波大降价&#xff0c;在汽车市场掀起了一片浪潮。格雷希尔GripSeal紧跟时事&#xff0c;在去年就针对新能源汽车的相关市场&#xff0c;推出了C9对接板总成系列&#xff0c;专为新能源汽车市场的领军企业量身打造&#xff0c;旨在为…

JDK9-21新特性概览(持续更新)

JDK9-21新特性概览 一、JDK9新特性1.1 JEP 102: Process API Updates简介案例风险 1.2 JEP 193: Variable Handles简介案例风险 1.3 JEP 200: The Modular JDK简介案例风险 1.4 JEP 213: Milling Project Coin简介案例1.1 try-with-resources增强1.2 接口中私有方法 1.5 JEP 22…

latex中复制到word里面之后如何转变成word自带的公式

详细步骤如下&#xff1a; 第一步&#xff0c;将latex中的公式复制到word里面&#xff0c;例如&#xff1a;$r_1^d$ 第二步&#xff0c;选中$$里面的部分&#xff0c;也就是去掉$$&#xff0c;选中剩余的部分&#xff0c;例如&#xff1a;r_1^d 第三步&#xff0c;word工具栏里…

vite+js配置

vite js 配置路径 npm install types/node --save-dev vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue //需要引入 import path from path// https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],resolve: {a…

Redis介绍及安装配置

1 什么是Redis Redis 的定义&#xff1a;Redis&#xff08;Remote Dictionary Server 远程字典服务&#xff09;是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可见Redis和我们最经常使用的MySQL都…