Centos升级openssh及openssl

一、源码下载

https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/

二、依赖环境安装

yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make krb5-devel git meson ninja-build glib2-devel lcms2-devel -y

上传或者使用wget 下载包

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH /portable/openssh-10.0p2.tar.gz

三、源码编译安装
安装依赖库

yum groupinstall "Development Tools " -y

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

解压源码包:

tar -zxvf openssh-10.0p2.tar.gz

cd openssh-10.0p2

编译与安装:

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl -dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-pam

如果系统中已安装其他版本的OpenSSL,需将--with-ssl-dir参数设置为OpenSSL的实际安装路径。
编译并安装:
make && make install

error:openssl版本低 需要先升级openssl 解决办法看文章最后

配置服务

  • 复制必要的配置文件和服务脚本:

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd
chmod +x /etc/init.d/sshd

更新系统服务:

systemctl daemon-reexec
systemctl enable sshd
systemctl start sshd

  • 验证安装
  • ssh -V

四、用构建的预编译的RPM包

安装依赖

yum -y install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make krb5-devel git meson ninja-build glib2-devel lcms2-devel -y

上传或wget下载openssh-10.0p2.tar.gz文件到/root目录下

cd /root/
tar -xvf openssh-10.0p2.tar.gz
mkdir -pv rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
cp openssh-10.0p2/contrib/redhat/openssh.spec rpmbuild/SPECS/
cp ~/openssh-10.0p2.tar.gz /root/rpmbuild/SOURCES
/cd rpmbuild/SPECS/
vi openssh.spec

打开这俩方便调试

把源码包放置在:/root/rpmbuild/SOURCES目录下 过程中发现openssh-10.0p2.tar.gz解压完为openssh-10.0p1 注意一下 开始构建可能会提示SOURCE下找不到包

执行:rpmbuild -bb openssh.spec 开始构建
过程中出现

解决:找到openssh.spec中%files server 部分的内容

添加如下内容、再次执行构建rpm包命令

%attr(0755,root,root) %{_libexecdir}/openssh/sshd-auth

构建成功后 rpm包在以下路径:

/root/rpmbuild/RPMS/x86_64

 

RPM包升级及报错处理

备份配置文件 

cp -rp /etc/ssh/ /etc/ssh-backup
cp -p /etc/pam.d/sshd /etc/pam.d/sshd-backup
cp -p /etc/sysconfig/sshd /etc/sysconfig/sshd-backup
cp -p /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service-backup

再执行yum安装升级

cd /root/rpmbuild/RPMS/x86_64
yum localinstall *.rpm -y

报错排查

sshd -t 校验配置文件

执行以下命令自动生成所有缺失的密钥类型(RSA 、ECDSA、ED25519):

ssh-keygen -A

确保密钥文件权限正确(仅root可读写):

chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub

升级Openssl

一、升级OpenSSL 1.1.1+版本

  1. 安装编译依赖

yum groupinstall "Development Tools" -y
yum install zlib-devel pam-devel perl-IPC-Cmd -y

下载并编译OpenSSL
以OpenSSL 1.1.1w为例:

wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl --openssldir=/etc/ssl --shared zlib
make -j$(nproc) && make install

更新系统链接库

echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl version # 验证应显示1.1.1w

  1. 二、编译安装OpenSSH 10.0p2

  2. 下载源码并配置

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz
tar -zxvf openssh-10.0p2.tar.gz
cd openssh-10.0p2
./configure \
--prefix=/usr \
--sysconfdir=/etc/ssh \
--with-ssl-dir=/usr/local/openssl \
--with-pam \
--with-zlib

编译与安装

make -j$(nproc) && make install

配置服务与验证

cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
systemctl daemon-reload
systemctl restart sshd
ssh -V # 应显示OpenSSH_10.0p2
可能会出现以下情况

执行以下命令自动生成所有缺失的密钥类型(RSA、ECDSA、ED25519):

ssh-keygen -A

若特定密钥缺失,可单独生成:

# 生成RSA密钥
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
# 生成ECDSA密钥
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
# 生成ED25519密钥
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''

确保密钥文件权限正确(仅root可读写):

chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub

上一篇 鸿蒙 Stage 模型到底是什么?一篇讲清 Ability、EntryAbility 和入口文件为什么这么设计
下一篇 安全扫描