当前位置: 首页 > 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…...

人工智能|大模型 —— 量化 —— 一文搞懂大模型量化技术:GGUF、GPTQ、AWQ

目前关于大模型量化技术的文章层出不穷&#xff0c;但对其理论部分的深入探讨却相对较少。本文将对大模型量化技术进行系统性的介绍&#xff0c;并重点聚焦于理论层面的深入解析。 一、大模型量化基础 大模型量化的核心在于将模型参数的精度从较高的位宽&#xff08;bit-width…...

基于Python的项目申报系统毕设源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于Python的项目申报系统&#xff0c;以满足现代项目管理中对项目申报流程的自动化、高效化和规范化的需求。具体研究目的如下&#x…...

手把手教你用EFR32BG22实现BLE串口透传(附GATT配置全流程)

EFR32BG22低功耗蓝牙串口透传开发实战指南 在物联网终端设备开发中&#xff0c;蓝牙串口透传是最基础也最实用的功能之一。本文将带您深入EFR32BG22芯片的蓝牙开发世界&#xff0c;从零开始构建一个高效的BLE串口透传服务。不同于简单的代码搬运&#xff0c;我们将重点关注GATT…...

提升开放平台开发效率,快马AI工具链自动化集成与测试

在企业级开放平台的开发过程中&#xff0c;效率往往是决定项目成败的关键因素之一。传统的开发流程中&#xff0c;开发者需要花费大量时间在重复性工作上&#xff0c;比如编写API客户端代码、配置测试环境、维护文档等。这些工作不仅耗时&#xff0c;还容易出错。今天我想分享一…...

CHORD-X从零开始:C语言基础概念学习报告自动生成教程

CHORD-X从零开始&#xff1a;C语言基础概念学习报告自动生成教程 你是不是也遇到过这样的烦恼&#xff1f;作为编程老师&#xff0c;每次讲完C语言的指针、结构体这些难点&#xff0c;总想给学生一份清晰易懂的复习报告&#xff0c;但自己动手整理又太花时间。或者&#xff0c…...

EtherCAT模块化实战:如何为你的设备设计可热插拔的IO模块(基于SSC与0x4711示例)

EtherCAT模块化实战&#xff1a;如何为你的设备设计可热插拔的IO模块 在工业自动化领域&#xff0c;设备的灵活性和可扩展性正变得越来越重要。想象一下&#xff0c;当你的客户需要在生产线上快速更换不同类型的传感器或执行器时&#xff0c;如果每次硬件变更都需要重新配置整个…...

Android开机向导定制实战:从源码分析到禁用状态栏的隐藏技巧

Android开机向导深度定制&#xff1a;从源码解析到状态栏控制实战 第一次接触Android开机向导定制时&#xff0c;我被这个看似简单却隐藏复杂逻辑的系统组件深深吸引。作为设备初始化的第一道门户&#xff0c;开机向导不仅承载着用户体验的第一印象&#xff0c;更是厂商品牌展示…...

Vue3项目救星:我是如何用Cursor的‘项目规则’功能,让团队新人一天上手的

Vue3团队协作革命&#xff1a;用Cursor项目规则实现代码规范的自动化治理 当新成员加入你的Vue3项目时&#xff0c;是否经历过这样的场景&#xff1f;新人提交的代码里混杂着选项式API和组合式API&#xff0c;路由命名忽而短横线忽而大驼峰&#xff0c;样式文件里散落着各种魔…...

ConvNeXt 改进 :ConvNeXt添加SAConv(可切换空洞卷积),自适应融合多尺度特征,优化小目标与遮挡目标感知,二次创新CNBlock结构

本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。 理论介绍 空洞卷积(Atrous Co…...

GitHub加速工具:解决开发者访问难题的终极方案

GitHub加速工具&#xff1a;解决开发者访问难题的终极方案 【免费下载链接】fetch-github-hosts &#x1f30f; 同步github的hosts工具&#xff0c;支持多平台的图形化和命令行&#xff0c;内置客户端和服务端两种模式~ | Synchronize GitHub hosts tool, support multi-platfo…...