一、背景
安全厂商扫描出部分漏洞,需要将现有的Centos7的OpenSSH_7.4p1升级到OpenSSH_8.1p1,不升级OpenSSL。
二、方案内容
1.安装telnet-server以及xinetd,防止ssh无法链接的时候,采用telnet应急用。
yum -y install telnet telnet-server xinetd
cat >> /etc/securetty <<EOF
pts/0
pts/1
pts/2
pts/3
EOF
# telnet服务 开机运行 和 启动
systemctl enable xinetd
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
2.下载openssh-8.0p1.tar.gz
下载地址如下:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.1p1.tar.gz
3.首先将下载的openssh-8.0p1.tar.gz上传到ECS的/root目录。
4.执行查看当前版本ssh -V

5.卸载旧版,一定要停止服务,否则升级后ssh连不上,重启sshd服务都没用,只能退回旧版重来!!!
# 停止服务!!!
service sshd stop
# 卸载旧版openssh
rpm -e `rpm -qa | grep openssh` --nodeps
cp -r /etc/ssh /etc/ssh_bak
rm -rf /etc/ssh/*
6.解压文件到usr/local/src/
tar -xzf /root/openssh-8.1p1.tar.gz -C /usr/local/src/
chown -R root.root /usr/local/src/openssh-8.1p1
7.安装依赖
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
yum install -y pam* zlib*
8.编译安装
cd /usr/local/src/openssh-8.1p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam
make && make install
9.配置
#复制文件并更改权限
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
#添加PermitRootLogin yes配置
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
#设置开机自启动ssh服务
chkconfig --add sshd
chkconfig sshd on
10.启动ssh服务
service sshd start
三、验证
1.执行如下命令查看升级后的ssh版本。
ssh -V

2.SSH升级成功后,重新尝试连接,验证成功后,断开TELNET连接,停止telnet服务,卸载telnet xinetd服务即可。
systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket
rpm -e `rpm -qa | grep telnet` --nodeps
rpm -e `rpm -qa | grep xinetd` --nodeps
四、回滚
如遇到升级失败,可以执行如下命令回滚openssh。
yum install -y openssh-server openssh-clients