【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级

这篇具有很好参考价值的文章主要介绍了【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

制作rpm包

rpmbuild命令用于创建软件的二进制包和源代码包。

官方文档:rpm.org - RPM Reference Manual rpmbuild 中文手册:rpmbuild 中文手册 [金步国]

使用rpmbuild将tar包打成rpm包

RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,这个是必装的。
#yum install rpm-build
当然也可以直接安装rpmdevtools,这个工具还包含一些其他的工具,同时它依赖rpm-build,所以直接安装的话会同时把rpm-build装上。
#yum install rpmdevtools
当然,根据不同的软件构建过程,还需要其他的编译打包工具,比如C语言的make、gcc,python的setuptools等,根据需要安装即可

执行如下命令来生成rpmbuild的工作目录

#rpmdev-setuptree
提示:rpmdev-setuptree命令默认将再当前用户主目录下创建一个RPM构建根目录结构,如果需要改变次默认位置,可以修改配置文件:~/.rpmmacros中变量_topdir对应的值即可。
rpmbuild/
├── BUILD                   #打包过程中的工作目录
├── BUILDROOT               
├── RPMS                    #存放生成的二进制包
├── SOURCES                 #放置打包资源,包括源码打包文件和补丁文件等
├── SPECS                   #放置SPEC文档
└── SRPMS                   #存放生成的源码包

编辑SPEC文件

SPEC撰写是打包RPM的核心,也算是最难的一步,好在我们可以从参照一个简单的模板文件开始,在可以实现基本功能的基础上再一步一步的扩充文档内容,直至完全达到要求。下面是一个简单的SPEC文档,其中包括了一些说明信息(注:#后面的内容为说明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后仅有一个执行文件、一个手册文件和一个项目说文件。 Emacs 和 vi 的最新版本有 .spec 文件编辑模式,它会在创建新文件时打开一个类似的模板。所以可使用以下命令来自动使用模板文件:

#cd ~/rpmbuild/SPECS
#vim hello.spec

相关资料:Redirect Notice How to create a GNU Hello RPM package/zh-cn - Fedora Project Wiki https://www.iteye.com/blog/hlee-3434994、构建RPM包

构建操作

开始构建操作,首先进入到当前用户的rpmbuild根目录

#cd ~/rpmbuild/
#rpmbuild -ba SPECS/*.spec
提示:-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包

openssh打包安装

安装服务和相关依赖
yum install zlib-devel openssl-devel gcc perl-devel pam-devel libXt-devel imake  gtk2-devel -y
yum install rpm-build
yum install rpmdevtools
到官网上下载对应版本的源码包
创建所需目录
rpmdev-setuptree
把所需的包拷贝到该目录下面
cd  /root/rpmbuild/
cp /root/openssh-8.8p1.tar.gz  . 
cp /root/openssh-8.8p1.tar.gz SOURCES
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz
cp x11-ssh-askpass-1.2.4.1.tar.gz SOURCES
tar xf openssh-8.8p1.tar.gz 
#openssh会自带.spec文件可根据linunx版本选择配置文件
./openssh-8.8p1/contrib/redhat/openssh.spec
./openssh-8.8p1/contrib/suse/openssh.spec
修改配置文件
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.spec 
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
构建
rpmbuild -ba openssh.spec
​
/root/rpmbuild/RPMS/x86_64下查看构建完成的rpm包

注:构建完成后在备用的机器上侧防止升级不成功导致无法登录

报错:
第一个报错
/usr/include/X11/Xlib.h
error: Failed build dependencies: 
    /usr/include/X11/Xlib.h is needed by openssh-8.8.p1-1.el7.x86_64
    libXt-devel is needed by openssh-8.8.p1-1.el7.x86_64
    imake is needed by openssh-8.8.p1-1.el7.x86_64
        gtk2-devel is needed by openssh-8.8.p1-1.el7.x86_64
解决办法
yum install libXt-devel imake gtk2-devel  openssl-libs -y
第二个报错
openssl-devel < 1.1 被 openssh-8.8p1-1.el7.x86_64 需要
构建依赖失败:openssl-devel < 1.1 被 openssh-8.8p1-1.el7.x86_64 需要 解决方法:
​
[root@localhost SPECS]# vim openssh.spec 
注释掉 BuildRequires: openssl-devel < 1.1 这一行
第三个报错:
RPM build errors:
    Installed (but unpackaged) file(s) found:
    /usr/libexec/openssh/ssh-sk-helper
    /usr/share/man/man8/ssh-sk-helper.8.gz
解决方法:
vi /usr/lib/rpm/macros
#%__check_files %{_rpmconfigdir}/check-files %{buildroot}
注释改行
第四个报错:
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.85UQUm (%build)
解决方法:

可能是时间不对更新时间,再重新试。

打包成功
Wrote: /root/rpmbuild/SRPMS/openssh-8.8p1-1.el7.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-8.8p1-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-clients-8.8p1-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-server-8.8p1-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-askpass-8.8p1-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-askpass-gnome-8.8p1-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-8.8p1-1.el7.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.DTNijH
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssh-8.8p1
+ rm -rf /root/rpmbuild/BUILDROOT/openssh-8.8p1-1.el7.x86_64
+ exit 0
升级前的准备(一定要进行)

注:升级请做好备份,在备机上进行测试,查看构建的rpm包是否有问题

备份pam 文件

cp /etc/pam.d/{sshd,sshd.bak}
开始升级
yum install pango atk gtk2 libXt
rpm -Uvh openssh-*
出现的问题
如出现安装完成后无法登录情况
检查/etc/ssh/下的文件或备份还原。
​
如出现安装完成自己跳出登录后无法登录的情况
请检查/root/rpmbuild/BUILD/openssh-8.8p1/sshd_config文件是否有问题(端口没开或禁止登录)
修改后重新构建rpm包,再进行升级。
​
sshd重启报错
修改sshd文件的权限
cd /etc/ssh/
chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
systemctl restart sshd
sshd 验证
ssh -V
OpenSSH_8.8p1, OpenSSL 1.0.2k-fips  26 Jan 2017

相关文档:centos7 安装openssh8.3 - 简书文章来源地址https://www.toymoban.com/news/detail-611107.html

到了这里,关于【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux常见命令 25 - RPM包安装、升级、卸载、查询、校验、提取

    目录 1. 包名与包全名 2. RPM安装 3. RPM包升级 4. RPM包卸载 5. 查询是否安装RPM包  6. RPM包校验 7.  RPM包中文件提取 1. 包名与包全名 包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径 包名:操作已经安装的软件包时,使用包名。是搜索 /var/lib/rpm/ 中的数据

    2024年02月04日
    浏览(46)
  • Linux如何将文件或目录打成rpm包? -- fpm打包详解

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年01月23日
    浏览(42)
  • 【Linux】RPM包管理工具

    人不走空                                                                          目录         🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 1. RPM 包管理工具简介 2. 常见 RPM 命令及其用法 2.1 安装 RPM 软件包 2.2 查询

    2024年02月02日
    浏览(38)
  • linux离线升级ssh,升级到openssh8.8版本

    服务器检查漏洞,需要升级服务器ssh版本,从openssh7.4升级到openssh8.8,平滑升级ssh方法。 实际生产服务器是RedHat 7.6,我在vm虚拟机中搭建了centos7.6测试环境,前期也用了一个RedHat 7.6不理想,实际直接下载的红帽是用不了的,需要注册服务器,要用也能用安装网上需要改一些东

    2024年02月14日
    浏览(42)
  • linux ssh7.4 升级至9.5(安全扫描漏洞处理)

    #漏洞处理# $ ssh -V 点击 telnet-0.17-66.el7.x86_64.rpm进行下载 点击xinetd-2.3.15-14.el7.x86_64.rpm进行下载 点击telnet-server-0.17-66.el7.x86_64.rpm进行下载 $ mkdir telnet $ cd telnet $ ls telnet-0.17-66.el7.x86_64.rpm  xinetd-2.3.15-14.el7.x86_64.rpm telnet-server-0.17-66.el7.x86_64.rpm 3.1 安装 $ cd telnet $ rpm -Uvh *.rpm --nodeps

    2024年02月05日
    浏览(39)
  • 实战攻防演练-Linux写入ssh密钥,利用密钥登录

    密钥形式登录的原理是利用密钥生成器制作一对密钥,一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账

    2024年02月08日
    浏览(58)
  • Kubernetes 的包管理器工具—— Helm 使用指南:打包、安装和升级 Kubernetes 中的应用程序

    作者:禅与计算机程序设计艺术 Helm 是 Kubernetes 的包管理器工具。Helm 可以帮助用户管理复杂的 Kubernetes 应用,通过 Charts 来打包、安装和升级 Kubernetes 中的应用程序。 1.1.1 Helm 安装 Helm 的下载及安装方式可以查看 官方文档。 1.1.2 Helm 操作命令 Helm 提供了多个子命令用于管理

    2024年02月09日
    浏览(52)
  • 通过RPM方式安装,升级,卸载,以及配置使用MySQL

    MySQL是一种开源的关系数据库管理系统,被广泛应用于各种业务应用中。本文将讲解如何下载和安装MySQL的rpm安装包。 下载rmp安装包有多种方式: 1、官网下载 可以到 MySQL的官网 进行下载。在下载页面中选择适合的版本和操作系统,本文以CentOS 7为例,选择Oracle Linux版本。最

    2024年02月15日
    浏览(49)
  • openeuler 22.03 制作openssh9.3p1 rpm升级包和升级实战

    openeuler 22.03 默认安装的openssh 版本为8.8p1,经绿盟扫描,存在高危漏洞,需要升级到最新。 官网只提供编译安装包,而openeuler 22.03 为rpm方式安装。 为了方便升级,先通过编译安装包,制作rpm包,并进行升级 如下为做好的rpm升级包,可直接下载使用: openssh 9.3p1 for bclinux eul

    2024年02月03日
    浏览(46)
  • Linux上安装和使用SSH工具

    SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务,我们通过SSH可以很方便实现远程登录以及文件传输等工作。 下面记录下如何在Debian/Ubuntu系统下实现SSH Server配置工作。 方法1:查看ssh服务状态 执行效果如下: 方法二:

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包