一、前言
本文的环境都是系统自带的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