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

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

1 介绍

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

 

2 将源码编译为rpm包

2.1 编译脚本介绍

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

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

[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目录下。


 

 

执行源码打包脚本

[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是否能正常登录到服务器

 

http://www.jsqmd.com/news/25696/

相关文章:

  • Python自动化之Docx文档处理(二)
  • Python自动化之Docx文档处理(一)
  • 替换 Android APEX 下属动态库的方法
  • 配置管理工具-Confd
  • 探索Go语言性能优化:全面解析pprof工具
  • Bcache详解及踩坑记录
  • HDD介质OSD新增SSD或NVME类型的DB或WAL分区
  • 什么是跨网域资源共享(CROS)
  • 【生活】选购油烟机
  • consul入门
  • 从经验到数据:MyEMS 如何推动能源管理的范式升级?
  • 2025 年试压泵厂家最新推荐榜,技术实力与市场口碑深度解析,展现国产设备卓越性能四缸电动/三缸电动/水管/大流量电动/柴油动力试压泵公司推荐
  • Ceph运维手册(基于P版本)
  • 个人微信机器人开发
  • 2025最新AI智能体学习路线图
  • K8S如何查询PVC的已用容量和剩余可用容量
  • 学术会议会议合集 | 人工智能、未来教育 、智能控制 、计算科学 、传感器技术等EI会议合集
  • 完整教程:金融分析师技能提升路径与学习资源指南
  • 2025 年水磨石厂家最新推荐榜,技术实力与市场口碑深度解析水磨石预制板/人造水磨石/水磨石地砖/水磨石成品地砖/彩色水磨石地砖公司推荐
  • Unreal:如何调用DLL
  • 建筑矿山设备工厂:MyEMS 如何助力实现 30% 能源自给率与 ISO 50001 认证?
  • lldpd介绍
  • HarmonyOS6纯血鸿蒙开发
  • 2025年10月短视频营销公司实力榜:五强对比评测与选择指南
  • kettle调度系统-kettle嵌入集成方式调度,稳如磐石,一分钟完成任务调度配置
  • 探索 RoCE v2:高性能网络技术在 AI 场景中的应用
  • K8S下的GPU监控
  • Unreal:多屏幕全屏后只有一个屏幕显示怎么办
  • MyEMS 的智慧大脑:从能耗建模到预测性维护的全流程技术逻辑
  • 用Go语言从零开始开发一个Prometheus Exporter