一、前言

本文的环境都是系统自带的openssh,若是手动编译安装的,不保证成功。若是自带的,则升级过程中不需要卸载旧版本openssh。

二、准备工作

2.1 系统说明

系统版本:CentOS Linux release 7.4.1708 (Core)
openssh:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
openssl: OpenSSL 1.0.2k-fips  26 Jan 2017

2.2 下载最新包

openssh-8.6p1.tar.gz
openssl-1.1.1k.tar.gz

2.3 安装telnet备用(可选)

安装新的ssh之后,只要配置好启动,就可以做到无缝切换,但是中途断开就不能连接了,为了防止这种情况,我们可以安装telnet当作备用,若是你能保证中途不会断开,此步骤可以忽略

三、升级openssl

3.1 备份

mv /usr/bin/openssl /usr/bin/openssl.bak

3.2 安装

tar xvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
./config shared zlib
make
make install

3.3 配置软连接

ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl

3.4 配置

echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

3.5 版本验证

openssl version -a

3.6 快速脚本

tar xvf openssl-1.1.1k.tar.gz && cd openssl-1.1.1k && ./config shared zlib && make && make install && mv /usr/bin/openssl /usr/bin/openssl.bak && mv /usr/include/openssl /usr/include/openssl.bak && ln -s /usr/local/bin/openssl /usr/bin/openssl && ln -s /usr/local/include/openssl /usr/include/openssl && echo "/usr/local/lib64/" >> /etc/ld.so.conf && ldconfig && openssl version -a

四、升级openssh

4.1 安装所需依赖

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

4.2 备份

mkdir /etc/ssh_old
mv /etc/ssh/* /etc/ssh_old/

4.3 解压、编译安装

tar xvf openssh-8.6p1.tar.gz
cd openssh-8.6p1/
yum -y install pam-devel
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/lib64/ --with-zlib --with-pam --with-md5-password --with-ssl-engine --with-selinux
make
make install
ssh -V

4.4 配置

4.4.1 修改sshd_config

vi /etc/ssh/sshd_config

例子:配置root登录, 根据你以前的配置来 PermitRootLogin yes

4.4.2 启动

mv /usr/lib/systemd/system/sshd.service /etc/ssh_old/sshd.service
mv /usr/lib/systemd/system/sshd.socket /etc/ssh_old/sshd.socket
cp -a contrib/redhat/sshd.init /etc/init.d/sshd

4.4.3 重新启动与添加自启动

systemctl daemon-reload
/etc/init.d/sshd restart
chkconfig --add sshd
chkconfig sshd on

4.5 版本验证

ssh -V

5.5 快速脚本

mkdir /etc/ssh_old && mv /etc/ssh/* /etc/ssh_old/ && tar xvf openssh-8.6p1.tar.gz && cd openssh-8.6p1/ && yum -y install pam-devel && ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/lib64/ --with-zlib --with-pam --with-md5-password --with-ssl-engine --with-selinux && make && make install && mv /usr/lib/systemd/system/sshd.service /etc/ssh_old/sshd.service && mv /usr/lib/systemd/system/sshd.socket /etc/ssh_old/sshd.socket && cp -a contrib/redhat/sshd.init /etc/init.d/sshd && systemctl daemon-reload && /etc/init.d/sshd restart && chkconfig --add sshd && chkconfig sshd on