当前位置: 首页 > 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是否能正常登录到服务器

图片

http://www.lryc.cn/news/143602.html

相关文章:

  • AcWing 898. 数字三角形 (每日一题)
  • 深度学习中,batchsize的大小对训练结果有什么影响,如何正确使用
  • Squaretest 1.8.3 安装激活
  • P21~22 第六章 储能元件——电容存储电场能,电感存储磁场能
  • 常见API架构介绍
  • Vue全局组件与局部组件(详解)
  • 对标 GPT-4?科大讯飞刘庆峰:华为GPU技术能力已与英伟达持平
  • pytorch中torch.gather()简单理解
  • 计算机网络安全的背景
  • Linux(实操篇一)
  • 如何做一个学术裁缝
  • 微服务系统面经之二: 以秒杀系统为例
  • 73 # 发布自己的 http-server 到 npm
  • 接口经典题目
  • 2023-8-28 n-皇后问题
  • 基于Visual studio创建API项目
  • leetcode做题笔记107. 二叉树的层序遍历 II
  • cdq优化背包转移:GYM104531I
  • STL list基本用法
  • 【ArcGIS微课1000例】0073:ArcGIS探索性回归分析案例
  • docker使用安装教程
  • 【SpringSecurity】五、UserDetails接口和UserDetailsService接口
  • 了解ET模式和LT模式:Linux网络编程中的事件触发方式
  • 内部类和匿名类
  • RISC-V 中国峰会 | OpenMPL引人注目,RISC-V Summit China 2023圆满落幕
  • 时空数据挖掘精选23篇论文解析【AAAI 2023】
  • MySQL 存储过程和函数
  • ClickHouse 使用
  • 通过SSH协议连接远程服务器(Linux)
  • IPC之System V vs POSIX