暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

告别编译源码!一键完成openssh升级到9.9

作者 | 徐sir 11g ocm、Oracle ACE-A、PGCM

中国OCMU成员、中国ACDU成员、墨天轮2023年十大优秀作者、青学会联合创始人

如需转载请私信联系我,除了墨天轮、CSDN、PGFANS和微信公众号以外都不是我的号

如果觉得我写的对你有帮助,麻烦动动小手,点下:转发、关注、在看,帮我多增加点人气

个人水平有限,有意见或者发现文章有误请留言、私信我,喷子轻喷

0、应用场景

简单说:

等保要求,LINUX无高风险,而SSH是我们几乎必须开放的!!!!!

如果你要用源码来编译安装我不拦着你,我以前尝试过手动来搞,但是出问题的概率太大,编译起来要求大多。尤其是新版本openssh9.4之后只能用新的openssl来一起编译。
有了RPM包,你可以用运维工具直接推下去多好。主要还得感谢github大佬们的无私奉献,下面是成品演示视频


1、工具介绍

搬运github大佬的工具
https://github.com/boypt/openssh-rpms
支持centos5/6/7都可以编译,亲测6编译的安装包在7/8上都可以用。使用7编译的包在bclinux、银河麒麟、华为欧拉系统、龙蜥都可以使用(安装完还需要适配调试才保证不出问题)。
目前发现linux9版本需要到9版本的系统上编译。
编译工具下载地址:
https://github.com/boypt/openssh-rpms/archive/refs/heads/main.zip
关于工具介绍

# Edit version.env file if you want a specific version of openssh/openssl combination (or maybe I havn't updated to the latest).

# Download source packages.
# if any error comes up, just manally download the source tar files into the `downloads` dir.
./pullsrc.sh

# Run the script to build RPMs.
# For CentOS 5, the default rpmbuild didn't set the variable of `${dist}`, manually run the script with argument `./compile.sh el5`

./compile.sh

工具下载下来解压是这个样的结构

    [root@localhost ~]# tree openssh-rpms-main
    openssh-rpms-main
    ├── amzn1
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.amzn1
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── amzn2
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.amzn2
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── amzn2023
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.amzn2023
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── compile.sh
    ├── docker
    │   ├── Dockerfile.amazonlinux
    │   ├── Dockerfile.centos
    │   ├── Dockerfile.centos-stream
    │   ├── modify_dnf_source.pl
    │   └── modify_yum_source.sh
    ├── docker.README.md
    ├── downloads
    │   └── x11-ssh-askpass-1.2.4.1.tar.gz
    ├── el5
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.el5
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── el6
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.el6
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── el7
    │   ├── BUILD
    │   ├── RPMS
    │   ├── SOURCES
    │   │   └── sshd.pam.el7
    │   ├── SPECS
    │   │   └── openssh.spec
    │   └── SRPMS
    ├── pullsrc.sh
    ├── README.md
    └── version.env

    1、compile.sh:编译脚本,执行生成RPM包用的,特殊说明了下,要是5版本的系统需要./compile.sh el5
    2、其中downloads里放的源码包

    3、x11-ssh-askpass-1.2.4.1.tar.gz
    4、el5/el6/el7/asmzn1/smzn2/smzn2023对应要编译的系统版本
    5、RPMS里是存储编译好的RPM包
    5、sshd.pam.el7 就是对应操作系统里的/etc/pam.d里的模板文件原始版本
    6、openssh.spec。编译好的rpm包放在EL7/RPMS目录下,有能力的小伙伴可以在这里修改相关的参数。
    7、pullsrc.sh:openssh相关源码文件下载脚本,如果没有网的话,也可以手动下载源码包,不使用这个脚本
    8、version.env:定义了openssh及openssl源码的版本信息

    至此,工具基本介绍完毕。

    2、准备编译环境

    准备编译环境,配置好yum源,安装如下安装包


      yum groupinstall -y "Development Tools"
      yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel


      新版本的工具里已经包含了ssh-copy-id命令,所以不需要再修改脚本了   

      准备好源码安装包,我这里手动下载了放到里面downloads目录里

      3、开始编译生成安装包

      执行源码打包脚本

        ./compile.sh

        国际惯例,检查一下编译是否成功

        检查rpm包是否都已经打包好 (新版本可以生成9.9的RPM)我这里用的图是旧图)    

        4、脚本一键安装

        这个就需要你认真适配每一个系统来修改了,可以写到SPEC文件里,也可以写在安装SHELL里。我就不贴在这里了,直接编译完的安装包是可以一键升级,但有的版本里可能会出现升级后SSH服务无法启动、升级后无法登陆系统、ssh登陆报错等。

        有需要的可以来我的咸鱼小店直接买成品

        升级新版本后host.allow和host.deny已经无法使用,解决办法看这篇:

        实用小技巧:限制SSH登录LINUX的主机IP

        关于RAC升级了SSH后可能无法打补丁可以看这篇

        RAC升级了openssh 9.x后踩坑了?看总监如何解决的》


        END

        往期文章回顾

        数据库安装搭建

        实战文章-win2012R2安装11G-RAC-上部

        实战文章-win2012R2安装11G-RAC-下部

        最佳实践-11G-RAC-LINUX标准存储双活场景安装

        实战:如何在LINUX8.0上安装Oracle 11.2.0.4(文内有快速配置安装脚本)

        搭建记录:duplicate搭建oracle rac到单实例搭建物理DG_V7

        如何正确在windows server core(无图形界面)安装Oracle 19c(ASM版本)

        如何正确在windows server core(无图形界面)安装Oracle 19c

        Sqlserver Alwayson部署文档V2.0

        使用PTK一键安装openGaussDB如此简单!

        实战RAC迁移系列

        实战RAC迁移项目第1篇:RAC-RAC的DG搭建

        实战RAC迁移项目第2篇:RAC-RAC主备切换/IP更换/DG恢复

        实战RAC迁移项目第3篇:RAC替换存储

        说说在云上部署RAC的一些注意事项

        假期加班实战:Solaris系统下Oracle 12.2 在线扩容ASM磁盘组操作记录

        如何通过cp迁移Oracle RAC到单机

        数据库优化实战系列

        小白也能学会的Oracle优化教程-主打零基础

        实战过程记录:濒临宕机的业务系统仅优化1个SQL即恢复!!

        Oracle故障处理系列

        数据库小技巧-KFED修复ASM磁盘头

        实用小技巧:UNDO 100%占用不释放解决办法

        实用小技巧-数据库实例不随RAC启动问题处理

        如何正确的在AIX 7.x系统中开启LargePage for Oracle

        记一次INS-06006典型问题|安装Oracle 19c rac遇到的ssh互信不通过

        实战:解决一次离奇的Oracle dblink不通问题

        实战:记一次DG跨平台迁移win_to_linux遇到的问题12

        处理11g grid集群安装10g database软件,无法DBCA创建集群实例问题

        记一次ORA-07445[nttaddr2bnd()+2158]问题处理

        windows下oracle12C创建第2个实例后,第1个实例无法启动??

        EXPDP遇到ORA-39171 ORA-1691报错处理办法

        Oracle生僻字乱码问题的解决办法

        小白常用-Windows下如何把Oracle从C盘整体迁移到D盘?

        系统集成类案例

        什么情况?FC-SAN网络居然卡爆了!

        真实案例-esxi7.0u1以上版本vCLS 虚拟机无法打开电源

        记一次古董级netapp存储更换故障硬盘全过程

        如何不停机完成Linux操作系统克隆,也适用于P2V&V2V

        安装ESXI 7.0的系统盘小于120G,安装后无本地datastore存储的处理办法

        Centos7等保加固配置登录失败处理导致root被锁定,如何解锁?

        推荐一些常用的windows补丁更新链接,请收藏!

        Oracle SPARC服务器系列

        传统IT领域的强者-Oracle小型机-第1篇:服务器简单介绍

        传统IT领域的强者-Oracle小型机-第2篇:SP规划配置与系统安装

        震惊!价值百万的数据库服务器更换内存如此简单!

        Oracle Solaris替换RAIDZ中故障的磁盘。


        ————————————————————— 

        公众号:徐sir的IT之路
        墨天轮:https://www.modb.pro/u/3605
        csdn: http://blog.csdn.net/xxddxhyz?type=blog
        pgfans:https://www.pgfans.cn/user/home?userId=5568
        ————————————————————— 

        文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论