当前位置: 首页 > news >正文

如何编译打包OpenSSH 9.4并实现批量升级

1 介绍

openssh 9.4版本已于8月10号发布,安全团队又催着要赶紧升级环境里的ssh版本,本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。

https://www.openssh.com/releasenotes.html

2 将源码编译为rpm包

2.1 编译脚本介绍

由于openssh官方只提供源码包,网上下载的rpm包有可能遇到各种依赖问题,因此我们选择自己将源码编译为rpm包来升级环境的openssh。当然编译过程也尽量简单化,这里我们直接使用开源的脚本进行编译。

https://github.com/boypt/openssh-rpms

编译需要涉及到很多开发软件的下载安装,建议使用一台虚拟机来进行操作。先下载编译脚本,解压

[root@etcd-1 ~]# wget https://github.com/boypt/openssh-rpms/archive/refs/heads/main.zip
[root@etcd-1 ~]# unzip main.zip
[root@etcd-1 ~]# cd openssh-rpms-main/

简单看下代码结构

  • compile.sh:编译脚本

  • el5、el6、el7:对应CentOS5、6、7三个系统,编译相关的参数由SPECS目录下的openssh.spec控制。编译好的rpm包放在RPMS目录下。

  • pullsrc.sh:openssh相关源码下载脚本

  • version.env:定义了openssh及openssl源码的版本信息

图片

2.2 修改代码

先修改一下pullsrc.sh脚本,给wget添加上"--no-check-certificate"参数,否则可能因为证书问题导致源码下载失败。

图片

另外默认openssh源码中是没有ssh-copy-id相关参数的,如果直接编译安装,会发现安装后没有ssh-copy-id命令,因此如果需要用到该命令,需要修改编译参数控制文件openssh.spec。本次要升级的环境为CentOS7,因此我只修改el7目录下的SPECS/openssh.speec文件,在如下位置添加一行。

install -m755 contrib/ssh-copy-id $RPM_BUILD_ROOT/usr/bin/ssh-copy-id

图片

继续修改el7目录下的SPECS/openssh.speec文件,在如下位置添加一行。

%attr(0755,root,root) %{_bindir}/ssh-copy-id

图片

2.3 准备编译环境

[root@etcd-1 openssh-rpms-main]# yum groupinstall -y "Development Tools"
[root@etcd-1 openssh-rpms-main]# yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel

2.4 拉取源码并编译打包

[root@etcd-1 openssh-rpms-main]# bash pullsrc.sh ##拉去源码包

执行完成后检查下download目录,相关的源码包是否已下载好,服务器没有网络,可以从下面的链接直接下载好传到download目录下。

https://www.openssl.org/source//openssl-1.1.1v.tar.gz

https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz

图片

执行源码打包脚本

[root@etcd-1 openssh-rpms-main]# bash compile.sh

编译完成检查编译是否成功

图片

检查rpm包是否都以打包好

图片

3 批量升级服务器openssh版本至9.4

3.1 脚本介绍

脚本会用到ansible,因此执行脚本的服务器上需要安装ansible。获取到脚本后,先解压

[root@172-20-17-60 ~]# tar xvf ssh_9.4.tar.gz
[root@172-20-17-60 ~]# cd ssh_9.4

脚本主要文件如下

  • hosts: ansible主机清单文件,填写待升级ssh版本的服务器ip及用户名密码

  • rpms:存放待升级的openssh相关的rpm包。可以将前面编译好的openssh包放入该路径下

  • ssh_update.sh:ssh升级脚本,将会推送到各个服务器

  • ssh_update.yaml:升级时ansible使用的playbook

  • update_ssh.sh:主脚本,通过该脚本来执行ansible的playbook

图片

3.2 自定待升级服务器信息

node1为主机组,主机组下填写服务器ip,服务器用户名密码相同的,可以填在一起

  • ansible_user:填写用户名

  • ansible_ssh_pass:填写登录密码

如果用其它用户名或密码不同的服务器,可以填写到主机组node2下,并可新增其它主机组

图片

3.3 执行脚本,开始升级openssh版本

[root@172-20-17-60 ssh_9.4]# bash update_ssh.sh

检查ssh版本是否已升级完成

图片

服务上检查openssh是否成功升级到9.4版本

图片

检查ssh是否能正常登录到服务器

图片

相关文章:

如何编译打包OpenSSH 9.4并实现批量升级

1 介绍 openssh 9.4版本已于8月10号发布,安全团队又催着要赶紧升级环境里的ssh版本,本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。 https://w…...

AcWing 898. 数字三角形 (每日一题)

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 注意 像数组下标出现i-1的,在循环的时候从i1开始。 关于0x3f3f3f3f和Integer.MAX_VALUE 0x3f3f3f3f:1061109567 Integer.MAX_VALUE:2147483647 在选用Integ…...

深度学习中,batchsize的大小对训练结果有什么影响,如何正确使用

一、影响: Batch size在深度学习训练中起着非常重要的作用,它对训练速度、模型性能、以及模型的泛化能力都有影响。以下是一些主要的影响: 训练速度:较大的batch size可以更充分地利用硬件并行性,从而加快单个epoch的…...

Squaretest 1.8.3 安装激活

1. 插件下载 2. 离线安装 3. 插件激活...

P21~22 第六章 储能元件——电容存储电场能,电感存储磁场能

1、电容元件 a定义 b线性时不变电容元件 c电容的电压与电流关系 i有限则u有限 注意理解面积 d电容的功率和储能 e例一 跃变就是指物体的物理量从有限值变为无限值的过程。 分析上图例题:对于电源波形要吃负无穷到正无穷去刻画。即时间轴要铺满。 有有图控制电…...

常见API架构介绍

常见API架构介绍 两个服务间进行接口调用,通过调用API的形式进行交互,这是常见CS架构实现的模式,客户端通过调用API即可使用服务端提供的服务。相较于SPI这种模式,就是服务端只规定服务接口,但具体实现交由第三方或者自…...

Vue全局组件与局部组件(详解)

当使用 Vue.js 构建应用时,组件是其核心概念之一。Vue 组件允许你将用户界面分割成独立、可复用的部分。这里我会更详细地解释 Vue 的全局组件和局部组件,包括它们的定义、使用方式以及适用场景。 Vue 全局组件: 全局组件是在整个 Vue 应用…...

对标 GPT-4?科大讯飞刘庆峰:华为GPU技术能力已与英伟达持平

科大讯飞创始人、董事长刘庆峰在亚布力中国企业家论坛第十九届夏季高峰会上透露了关于自家大模型进展的一些新内容。刘庆峰认为,中国在人工智能领域的算法并没有问题,但是算力方面似乎一直被英伟达所限制。 以往的“百模大战”中,训练大型模型…...

pytorch中torch.gather()简单理解

1.作用 从输入张量中按照指定维度进行索引采集操作,返回值是一个新的张量,形状与 index 张量相同,根据指定的索引从输入张量中采集对应的元素。 2.问题 该函数的主要问题主要在dim维度上,dim0 表示沿着第一个维度(行…...

计算机网络安全的背景

虽然传统的计算机发展和当今的电子商务不同,但是不可否认网络已经成 为非常重要的信息和数据互换交换的平台。但是随着网络不断发展渗透到人们的日 常生活、手机终端、交易支付等环节时,网络安全已经成为一个焦点和不可逾越的 发展鸿沟。尽管目前网上…...

Linux(实操篇一)

Linux实操篇 Linux(实操篇一)1. 常用基本命令1.1 帮助命令1.1.1 man获得帮助信息1.1.2 help获得shell内置命令的帮助信息1.1.3 常用快捷键 1.2 文件目录类1.2.1 pwd显示当前 工作目录的绝对路径1.2.2 ls列出目录的内容1.2.3 cd切换目录1.2.4 mkdir创建一个新的目录1.2.5 rmdir删…...

如何做一个学术裁缝

水刊:SCI四区,部分三区 顶刊、顶会要看,但是别看多了,知道好的东西长什么样就行了 去水刊,多去看水刊论文,能发现新大陆 一个论文需要多个数据集(两个),绝大多数水刊只用…...

微服务系统面经之二: 以秒杀系统为例

16 微服务与集群部署 16.1 一个微服务一般会采用集群部署吗? 对于一个微服务是否采用集群部署,这完全取决于具体的业务需求和系统规模。如果一个微服务的访问压力较大,或者需要提供高可用性,那么采用集群部署是一种常见的策略。…...

73 # 发布自己的 http-server 到 npm

1、添加 .npmignore 文件,忽略不需要的文件 public2、去官网https://www.npmjs.com/检查自己的包名是否被占用 3、切换到官方源,然后检查确认 nrm use npm nrm ls4、登录 npm 账号 npm login5、发布 npm publish6、查看发布情况,发布成功…...

接口经典题目

​ White graces:个人主页 🙉专栏推荐:《Java入门知识》🙉 🙉 内容推荐:继承与组合:代码复用的两种策略🙉 🐹今日诗词:人似秋鸿来有信,事如春梦了无痕。🐹 目录 &…...

2023-8-28 n-皇后问题

题目链接&#xff1a;n-皇后问题 第一种搜索顺序 #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool row[N], col[N], dg[N], udg[N];void dfs(int x, int y, int s) {if(y n) y 0, x ;if(x n){if(s n){for(int i 0; i < n;…...

基于Visual studio创建API项目

API&#xff08;英文全称&#xff1a;Application Programming Interface,中文&#xff1a;应用程序编程接口&#xff09; 为什么要 通过API接口可以与其他软件实现数据相互通信&#xff0c;API这项技术能够提高开发效率。 本文是基于vs2017 .net平台搭建API。希望可以帮助到学…...

leetcode做题笔记107. 二叉树的层序遍历 II

给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 思路一&#xff1a;递归调换顺序 int** levelOrderBottom(struct TreeNode* root, int* returnSize, i…...

cdq优化背包转移:GYM104531I

https://codeforces.com/gym/104531/problem/I 转化部分&#xff1a;关于 括号序列与问号 问题的一类处理方法 发现一个区间 [ i : j ] [i:j] [i:j] 合法要满足以下条件&#xff1a; 最后一个很好搞。前3个就是个cdq形式。 第一个拿来排序&#xff0c;后面对于黑白点分别以不…...

STL list基本用法

目录 list的使用构造函数和赋值重载迭代器(最重要)容量相关插入删除元素操作reversesortuniqueremovesplice list的底层实际是双向链表结构 list的使用 构造函数和赋值重载 构造函数说明list()无参构造list (size_type n, const value_type& val value_type())构造的li…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...