环境说明

1. 更换国内在线yum源

cat > CentOS-163.repo << 'EOF'
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos-vault/6.10/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
 
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos-vault/6.10/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos-vault/6.10/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos-vault/6.10/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
EOF

2. 更新缓存并安装软件测试

yum clean all
 
yum makecache fast
 
yum install vim lrzsz wget curl net-tools openssh-server git
 
yum update --exclude=centos* -exclude=kernel*

3.  基于开源项目制作 rpm包

openssh  9.8p1版本,openssl 3.0.14版本。

步骤 1:安装编译依赖

在开始编译之前,需要安装一些编译工具和依赖项。在终端中运行以下命令安装编译所需的依赖项:

sudo yum groupinstall "Development Tools" -y
sudo yum install wget git zip unzip perl-IPC-Cmd rpm-build imake pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel openssl-devel -y

步骤 2:下载源代码

下载OpenSSL和OpenSSH的源代码压缩包,并解压到工作目录中。

# 准备源码
 
wget --no-check-certificate https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
 
wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.14/openssl-3.0.14.tar.gz
 
git clone https://github.com/boypt/openssh-rpms.git
 
# 将下载好的源码压缩文件放到downloads目录下
 
cp openss* /root/openssh-rpms-main/downloads

步骤 3:执行脚本

cd /root/openssh-rpms-main

./pullsrc.sh   // 先执行这个脚本检查文件是否正确,不对将重新进行下载

./compile.sh    //执行脚本 开始编译

ls -l el7/RPMS/x86_64/        //查看打包好的 rpm 包

步骤 4:配置和编译OpenSSL(如果步骤三执行无任务问题的话,此步骤可跳过)

进入OpenSSL源代码目录,执行以下命令进行配置和编译:

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
sudo make install

上述命令会将OpenSSL安装到 /usr/local/openssl目录下。

步骤 5:配置和编译OpenSSH(如果步骤三执行无任务问题的话,此步骤可跳过)

进入OpenSSH源代码目录,执行以下命令进行配置和编译:

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl
make
sudo make install

上述命令会将OpenSSH安装到 /usr目录下,并将配置文件安装到 /etc/ssh目录下。

步骤 6:创建RPM包(如果步骤三执行无任务问题的话,此步骤可跳过)

将编译好的OpenSSL和OpenSSH安装目录打包为RPM包。在终端中执行以下命令:

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
cp /usr/local/openssl/bin/openssl ~/rpmbuild/SOURCES/
cp /usr/bin/ssh* ~/rpmbuild/SOURCES/

创建OpenSSL和OpenSSH的RPM规范文件。在终端中执行以下命令:

cd ~/rpmbuild/SPECS
vim openssl.spec   //创建OpenSSLRPM规范文件
vim openssh.spec   //创建OpenSSHRPM规范文件

步骤 7:构建RPM包(如果步骤三执行无任务问题的话,此步骤可跳过)

在终端中执行以下命令构建RPM包:

rpmbuild -ba openssl.spec
rpmbuild -ba openssh.spec

openssl.spec 文件内容

Name:           openssl
Version:        3.0.14
Release:        1%{?dist}
Summary:        OpenSSL RPM
 
License:        OpenSSL
URL:            https://www.openssl.org/
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source0:        %{name}-%{version}.tar.gz
 
%description
OpenSSL RPM
 
%prep
%setup -q
 
%build
./config
make
 
%install
make install DESTDIR=$RPM_BUILD_ROOT
 
%files
%defattr(-,root,root,-)
/usr/local/openssl/bin/openssl
 
%changelog
* Sat Sep 07 2024 John Doe <john@example.com> - 3.0.14-1
- Initial build

openssh.spec 文件内容

Name:           openssl
Version:        3.0.14
Release:        1%{?dist}
Summary:        OpenSSL RPM
 
License:        OpenSSL
URL:            https://www.openssl.org/
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source0:        %{name}-%{version}.tar.gz
 
%description
OpenSSL RPM
 
%prep
%setup -q
 
%build
./config
make
 
%install
make install DESTDIR=$RPM_BUILD_ROOT
 
%files
%defattr(-,root,root,-)
/usr/local/openssl/bin/openssl
 
%changelog
* Sat Sep 07 2024 John Doe <john@example.com> - 3.0.14-1
- Initial build

构建完成后,生成的RPM包将位于 /root/openssh-rpms-main/el7/RPMS/x86_64/目录下。

以上是在CentOS 7上编译生成OpenSSL和OpenSSH RPM包的一般步骤。

请注意,实际操作中可能会因为源代码版本、配置参数等而有所差异。如果对编译和打包不熟悉,建议谨慎操作或寻求专业人员的帮助。