使用官网tar包制作OpenSSL及OpenSSH rpm包进行升级安装(OpenSSH_9.9p1, without OpenSSL未解决)

一、制作openssl-1.1.1w.rpm包

1、安装基础依赖包和rpmbuild及其依赖包

yum install  curl  which  make gcc perl  perl-WWW-Curl  rpm-build rpm-build rpmdevtools tree -y
yum install gcc-c++ glibc glibc-devel  openssl openssl-devel \
   pcre-devel zlib zlib-devel perl perl-devel make imake wget xmkmf \
  initscripts  krb5-devel pam-devel krb5-devel libX11-devel libXt-devel gtk2-devel autoconf libtool unzip gdb -y

此处注意若有报:没有可用软件包;自行配置本地yum源及ali源可以解决

2、创建rpmbuild目录

rpmdev-setuptree  
tree /root/rpmbuild

3、创建spec文件

spec文件可自定义名称,后缀为.spec即可。此处命名为openssl.spec与后续制作openssh区分开,现实使用时可以更为详细的标注版本号

此处注意ssl安装位置,下文安装位置为/usr/openssl

vim /root/rpmbuild/SPECS/openssl.spec
--------------------------------------------------------------------------
Summary: OpenSSL 1.1.1w for Centos
Name: openssl
Version: %{?version}%{!?version:1.1.1w}
Release: 1%{?dist}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
URL: https://www.openssl.org/
License: GPLv2+

Source: https://www.openssl.org/source/%{name}-%{version}.tar.gz

BuildRequires: make gcc perl perl-WWW-Curl
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%global openssldir /usr/openssl

%description
OpenSSL RPM for version 1.1.1w on Centos

%package devel
Summary: Development files for programs which will use the openssl library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}

%description devel
OpenSSL RPM for version 1.1.1w on Centos (development package)

%prep
%setup -q

%build
./config --prefix=%{openssldir} --openssldir=%{openssldir}
make

%install
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%make_install

mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir}
ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir}

%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%files
%{openssldir}
%defattr(-,root,root)
/usr/bin/openssl
/usr/lib64/libcrypto.so.1.1
/usr/lib64/libssl.so.1.1

%files devel
%{openssldir}/include/*
%defattr(-,root,root)

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

4、准备tar包

SSL网址:1.1.1 | Library

cd /root/rpmbuild/SOURCES
拖包
tar -zxvf openssl-1.1.1w.tar.gz

5、开始编译openssh.spec文件

rpmbuild -ba /root/rpmbuild/SPECS/openssl.spec   

6、验证

cd /root/rpmbuild/RPMS/x86_64 && ls

二、rpm升级至openssl-1.1.1w

openssl version

升级高版本openssl 切记有风险!  备份旧版openssl文件

迭代直接替换原有文件 – 如有需要建议备份以下文件

mkdir ~/ssl_bak
cp /usr/bin/openssl ~/ssl_bak
cp /usr/lib64/libcrypto.so.1.0.2k ~/ssl_bak
cp /usr/lib64/libssl.so.1.0.2k ~/ssl_bak

1、卸载 openssl并检查是否卸载

#卸载所有与 OpenSSL 相关的包,但不包括以 "libs" 开头的包
rpm -e `rpm -qa |grep openssl |grep -v libs` --nodeps
rpm -qa |grep openssl

############
注意openssl-libs-1.0.2k-26.el7_9.x86_64包不卸载!!!

2、升级验证

#强制安装 忽略依赖
rpm -ivh openssl-1.1.1w-1.el7.x86_64.rpm --nodeps --force
openssl version

3、替换原动态库

如需使用新版本开发,则需替换原来的软链接指向,即替换原动态库,进行版本升级。
替换/lib(lib64)和/usr/lib(lib64)和/usr/local/lib(lib64)存在的相应动态库:

ln -sf /usr/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so
ln -sf /usr/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so

三、制作openssh-9.9p1.rpm包

制作前先升openssl至1.1.1版本,方法自选

1、安装基础依赖包和rpmbuild依赖包(安装过可跳过该步骤

yum install rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel \
    pcre-devel zlib zlib-devel perl perl-devel make imake wget xmkmf \
  initscripts  krb5-devel pam-devel krb5-devel libX11-devel libXt-devel gtk2-devel autoconf libtool unzip gdb -y

2、安装rpmbuild和依赖(安装过可跳过该步骤

yum install rpm-build rpmdevtools tree -y  

3、创建rpmbuild目录(创建过可跳过该步骤

rpmdev-setuptree  
tree /root/rpmbuild

4、准备tar包

SSH网址:Index of /pub/OpenBSD/OpenSSH/portable/

还有x11-ssh-askpass-1.2.4.1.tar.gz

cd /root/rpmbuild/SOURCES
(自己拉或者wget,此处wget为8.9命令示例)
wget --no-check-certificate -c https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.9p1.tar.gz 
wget --no-check-certificate -c https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz

5、制作openssh.spec文件

tar -zxvf openssh-9.9p1.tar.gz
cp openssh-9.9p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS 
cd /root/rpmbuild/SPECS

6、修改openssh.spec文件

#注释掉BuildRequires: openssl-devel
sed -i -e "s/BuildRequires: openssl-devel < 1.1/# BuildRequires: openssl-devel < 1.1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec

 #######以下为验证/root/rpmbuild/SPECS/openssh.spec文件

vim /root/rpmbuild/SPECS/openssh.spec
-------------------------------------------------------------
#在openssh9.9.spec文件中的%post server处添加以下内容
cp -r /etc/ssh /etc/ssh.bak
cp -r /usr/bin/ssh /usr/bin/ssh.bak
sed -i -e  "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
sed -i "/#PermitRootLogin prohibit-password/c\PermitRootLogin yes" /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -i  -e  "s/UsePAM yes/UsePAM no/g" /etc/ssh/sshd_config
systemctl restart sshd

#在openssh9.9.spec文件中的%configure处添加openssl的安装路径(此处疑问为ssl位置导致报错?
--with-openssl-includes=/usr/local/openssl/include \
--with-ssl-dir=/usr/local/openssl \

7、开始编译openssh.spec文件

rpmbuild -ba /root/rpmbuild/SPECS/openssh.spec   
cd /root/rpmbuild/RPMS/x86_64

####此处若有以下报错:

configure: error: cannot use --with-ssl-dir when OpenSSL disabled

错误:/var/tmp/rpm-tmp.iLX0dn (%build) 退出状态不好

需要去掉–with-ssl-dir配置(怀疑为导致升级后without Openssl,慎用吧)

sed -i -e '/with-privsep-path/a\  --with-openssl-includes=/usr/local/openssl/include \\' openssh.spec

openssh.spec 配置如下图

四、rpm升级至openssh-9.9

当前版本为7.4

ssh -V

升级前先升openssl至1.1.1版本,方法自选

openssl version

 

1、检查并安装telnet服务

rpm -q telnet-server
rpm -q telnet
yum install telnet* -y
systemctl enable telnet.socket
systemctl start telnet.socket
mv /etc/securetty /etc/securetty.bak
systemctl status telnet.socket 

2、安装依赖

yum -y install zlib*
yum -y install pam-*
yum -y install gcc
yum -y install openssl-devel

3、备份

mv /etc/ssh /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak

4、卸载openssh

rpm -e openssh --nodeps
rpm -e openssh-clients --nodeps
rpm -e openssh-server --nodeps

5、检查openssh是否已经卸载

rpm -qa|grep openssh
ssh -V


 
6、安装openssh

cd /rpm包位置
rpm -ivh openssh* --nodeps


 
7、安装完成后,检查是否已经安装

rpm -qa|grep openssh
vim /etc/sysconfig/selinux
--------------------
SELINUX=disabled
---------------------

#重启服务并验证
systemctl restart sshd
systemctl status sshd
ssh -V

五、编译升级OpenSSL-1.1.1c

当前实验理论解释较少,无详细命令解析

#查看当前openssl版本
ssh -V
openssl version   ####这个更准确

1、官网下载openssl-1.1.1c.tar.gz包(也可以自己准备传进去

#进入准备存放tar包的文件夹(没有自己mkdir,自行决定)
cd data

#获取tar包
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz

2、解压

tar -zxvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c

3、编译安装

./config --prefix=/usr/local/openssl
make && make install

4、更新验证

mv /usr/bin/openssl /usr/bin/openssl.bak
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version

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

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

相关文章

WAL日志

1.WAL概述 PG WAL&#xff08;Write-Ahead Logging&#xff09;日志是PostgreSQL数据库中的一种重要机制&#xff0c;用于保证数据库的完整性和数据恢复。 1.1定义与功能 WAL日志是PostgreSQL的持久性技术&#xff0c;它将所有对数据库的修改操作&#xff08;如INSERT、UPDA…

开放寻址法、链式哈希数据结构详细解读

一、开放寻址法&#xff08;Open Addressing&#xff09; 1. 定义 开放寻址法是一种哈希冲突解决策略&#xff0c;所有元素都存储在哈希表中。当发生冲突时&#xff0c;即两个键计算出的哈希值相同时&#xff0c;会按照一定的探查序列查找下一个可用的位置来存储新元素。 2.…

算法通关(4)-- 前缀树

前缀数原理和代码 原理 前缀树&#xff08;Trie树&#xff09;&#xff0c;也称为字典树&#xff0c;是一种用于高效存储和检索字符串的数据结构。它是一种树形结构&#xff0c;能够利用字符串的公共前缀来减少存储空间和查询时间。 现在有“acb”,"cba","ac…

CSS3新增渐变(线性渐变、径向渐变、重复渐变)

1.线性渐变 代码&#xff1a; 效果图&#xff1a; 使文字填充背景颜色&#xff1a; 效果图&#xff1a; 2.径向渐变 代码&#xff1a; 效果图&#xff1a; 代码图&#xff1a; 效果图&#xff1a; 3.重复渐变 代码&#xff1a; 效果图&#xff1a;

Python 学习完基础语法知识后,如何进一步提高?

入门Python后&#xff0c;就可以拿些小案例练手了&#xff0c;这时候千万不要傻乎乎地成天啃语法书。 编程是一门实践的手艺&#xff0c;讲究孰能生巧。不管是去手撸算法、或者照葫芦画瓢写几个小游戏都可以让你的Python突飞猛进。 之前看github比较多&#xff0c;推荐给大家…

blender导入的图片渲染看不见,图片预览正常,但渲染不出

在使用Blender时&#xff0c;我们经常会遇到导入图片后在预览渲染中显示&#xff0c;但在实际渲染时图片消失的问题。本文将提供详细的解决方法&#xff0c;帮助大家解决“Blender导入的图片渲染图像不显示”的问题。 问题原因 导入的图片在Blender中只是一张图&#xff0c;并…

【数据结构】选择排序——选择排序 和 堆排序

选择排序 和 堆排序 一、选择排序选择排序的思路及其代码选择排序的弊端 二、堆排序三、速度对比同时排10000个数同时排100000个数同时拍500000个数堆排 1 亿个数 一、选择排序 选择排序的思路及其代码 选择排序思路很简单 就是经过将数组遍历选择最小值 将最小值位置的数与数…

Docker在CentOS上的安装与配置

前言 随着云计算和微服务架构的兴起&#xff0c;Docker作为一种轻量级的容器技术&#xff0c;已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南&#xff0c;帮助他们在CentOS系统上安装和配置Docker及相关组件&#xff0c;如Docker Compose和私有…

大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

CLIP论文CLIP 改进工作串讲

文章目录 CLIPViLTCLIP 改进工作串讲Lseg&#xff08;Language -driven semantic segmentation)Group ViT&#xff08;Semantic Segmentation Emerges from Text Supervision&#xff09;ViLDGLIP_V1/V2&#xff08;Ground Language-Image Pre-train&#xff09;CLIP PassoCLIP…

C++:set详解

文章目录 前言一、set概念介绍二、set的使用1. 插入删除相关2. 查找相关1&#xff09;find2&#xff09;count3&#xff09;lower_bound与upper_bound4&#xff09;equal_range 三、set的值是不能修改的原理四、基于哈希表的set总结 前言 根据应用场景的不同&#xff0c;STL总…

【静态页面】尚品汇 1、设计稿分析及资源准备

目录 1. 准备工作2. 理解设计3. 规划项目结构 1. 准备工作 安装必要的工具&#xff1a;确保你的开发环境已经准备好&#xff0c;包括文本编辑器&#xff08;如 VSCode&#xff09;、浏览器等。获取设计文件&#xff1a;获取UI设计稿或者设计文件链接&#xff0c;并确保可以访问…

小时收入:衡量工作效率与个人自由的标准

小时收入&#xff0c;就是按照小时来计算一个人的收入。比如&#xff0c;一个月一共工作200小时&#xff0c;获得的总收入是20000元&#xff0c;那么小时收入就是100元/小时。 小时收入可以反应一个人的赚钱效率。 可能两个人的月收入一样&#xff0c;但是付出的总工作时间不…

RFID文件柜在文件管理中的作用

一、RFID文件柜系统概述 1.1 RFID技术简介 RFID&#xff08;Radio Frequency Identification&#xff0c;无线射频识别&#xff09;技术是一种非接触式的自动识别技术&#xff0c;它通过无线电讯号识别特定目标并读写相关数据&#xff0c;无需识别系统与特定目标之间建立机械…

mysql代码生成器

项目 pom 文件内容 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/…

域控操作二十四:主域故障辅域接替

模拟环境&#xff1a;上海DC1故障无法开机&#xff0c;导致只有一个DNS的电脑无法上网&#xff08;实际可以添加DC2但是为了实验就不说了&#xff09; FSMO还在DC1上 使用powershell把角色迁移到DC2 ntdsutil roles connections connect to server DC2SHA.whbk.cn quitSeize …

Redis(2):内存模型

一、Redis内存统计 工欲善其事必先利其器&#xff0c;在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后&#xff08;后面如无特殊说明&#xff0c;客户端一律使用redis-cli&#xff09;&#xff0c;通过info命令可以查看内存使用情…

数据分析:宏基因组DESeq2差异分析筛选差异物种

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理:计算步骤:结果:加载R包准备画图主题数据链接导入数据Differential abundance (No BP vs 2BP TA)构建`countData`矩阵过滤低丰度物种构建DESeq数据对象DESeq2差异分析画图Di…

泷羽sec学习打卡-shodan扫描4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shodan的那些事儿-4 一、shodan4如何查看公网ip&#xff1f;如何查看自己的ip&#xff1f;如何查看出…