背景

在开发过程中,需求甲方提供的服务器还是用的是Centos7系统,其openssh以及openssl版本还很低,安全方面有很多问题,而yum又无法升级,因此我们需要通过下载源码来安装,本文就一步一步教大家如何通过源码升级最新的openssh以及openssl

升级openssl

首先,我们需要去openssl官网下载最新的版本源码包

作者当前最新稳定版本为 openssl-1.1.1k.tar.gz

cd /root
curl -o openssl.tar.gz https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar xzf openssl.tar.gz

下载之后,我们进入目录

cd openssl-1.1.1k/

查看下安装说明

more INSTALL

现在我们先安装依赖

yum instal -y gcc zlib-devel pam pcre-devel perl autoconf

如果不需要安装pam和zlib的话可以不安装这两个

现在我们安装openssl/usr/local/openssl目录下
执行配置

./config shared --libdir=/usr/local/openssl/lib --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

编译和安装

make && make install

安装成功后,我们将原有的openssl移动一个位置,为新的openssl版本建立软连接

mv /usr/bin/openssl /usr/bin/openssl_bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

刷新动态库

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig

打印版本号,可以看到升级成功了

openssl version

显示为 OpenSSL 1.1.1k 25 Mar 2021 (Library: OpenSSL 1.1.1g FIPS 21 Apr 2020)

升级openssh

此项比较谨慎

首先打开官方网站选择一个节点
这里我们选择CDN节点
找到最新版本的openssh并下载解压

作者当前最新稳定版本为 openssh-8.6p1.tar.gz

cd /root
curl -o openssh.tar.gz https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
tar xzf openssh.tar.gz

进入目录,准备安装,若不需要zlib和pam的话,可以去掉参数

cd /openssh

我们先备份一下当前ssh的配置项

mv /etc/sshd /etc/ssh_bak

进入目录安装(可以去掉zlib和pam)

cd openssh
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam
make && make install

拷贝配置脚本

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd

将原先的sshd的服务移走,再启动服务

mv  /usr/lib/systemd/system/sshd.service /root
chkconfig sshd on
systemctl restart sshd

可以看到sshd成功启动了