0 前言

本文参考以下链接:

1 openssh-9.5p1

1.1 编译环境

  • 编译平台: 华为私有云
  • 系统版本: 麒麟 v7.4
  • 系统内核: 3.10.0-693.43.1.el7.x86_64

软件版本:

  • openssh-9.5p1.tar.gz
  • openssl-3.0.11.tar.gz
  • x11-ssh-askpass-1.2.4.1.tar.gz

编译脚本项目地址

1.2 编译步骤

添加 yum 源略, 云平台自带 yum 源

创建工作目录

mkdir -p /opt/openssh-9.5/openssh-9.5p1-update-script/resource

下载 编译脚本, 上传至服务器 /opt/openssh-9.5 目录并解压

cd /opt/openssh-9.5; unzip openssh-rpms-main.zip

yum 安装依赖工具

yum clean all; yum makecache
yum install wget vim gdb imake libXt-devel gtk2-devel  rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip krb5-devel  libX11-devel  initscripts

默认 openssh 源码中是没有 ssh-copy-id 相关参数的,如果直接编译安装,会发现安装后没有 ssh-copy-id 命令,因此如果需要用到该命令,需要修改编译参数控制文件 openssh.spec, 本次安装使用的操作系统是 el7 系列的

vim /opt/openssh-9.5/openssh-rpms-main/el7/SPECS/openssh.spec

如下位置添加一行

install -m755 contrib/ssh-copy-id $RPM_BUILD_ROOT/usr/bin/ssh-copy-id

image-20231114160828131

第二处添加

%attr(0755,root,root) %{_bindir}/ssh-copy-id

image-20231114161012601

下载各源码包上传至服务器 /opt/openssh-9.5/openssh-rpms-main/downloads

image-20231114161838284

执行编译打包脚本

cd /opt/openssh-9.5/openssh-rpms-main/; bash compile.sh

脚本应正常运行, 查看编译后的 rpm 包

cd /opt/openssh-9.5/openssh-rpms-main/el7/RPMS/x86_64/; ls

image-20231114162423846

1.3 升级脚本

拷贝编译后的包到 resource 目录

cp /opt/openssh-9.5/openssh-rpms-main/el7/RPMS/x86_64/*.rpm /opt/openssh-9.5/openssh-9.5p1-update-script/resource/

编写升级脚本

cat > /opt/openssh-9.5/openssh-9.5p1-update-script/run.sh <<EOF
#!/bin/bash
#
# Author  : lvbibir
# Email   : lvbibir@gmail.com
# Version : V1.0
# Time    : 2023-11-14 16:48:30
# Desc    : A script for update ssh

set -e
ssh -V
/bin/cp /etc/pam.d/sshd /etc/pam.d/sshd_bak
/bin/cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
# 如有 yum 源推荐使用 yum 方式
# yum localinstall -y resource/openssh-*.rpm
rpm -Uvh resource/openssh-*.rpm
/bin/cp /etc/pam.d/sshd_bak /etc/pam.d/sshd
/bin/cp /etc/ssh/sshd_config_bak /etc/ssh/sshd_config
rm -rf /etc/ssh/ssh*key
systemctl daemon-reload
systemctl restart sshd
ssh -V

EOF

chmod 755 /opt/openssh-9.5/openssh-9.5p1-update-script/run.sh

打包

cd /opt/openssh-9.5/
tar zcf openssh-9.5p1-update-script.tar.gz openssh-9.5p1-update-script

上传压缩包至服务器 /opt/ 目录

cd /opt; tar zxf openssh-9.5p1-update-script.tar.gz
cd /opt/openssh-9.5p1-update-script/; sh run.sh

以上.