OpenSSH是SSH协议的免费开源实现,经常会曝出安全漏洞,由于CentOS7自带的OpenSSH版本(OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017)太低,有必要进行新服务器的OpenSSH版本升级。升级OpenSSH升级前首先需要升级OpenSSL。
本升级教程仅针对CentOS7
预处理防止升级过程中连接中断
#安装telnet服务
yum -y install telnet-server
或者离线安装
http://www.rpmfind.net/ 搜索telnet-server
rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm
#启动telnet服务
systemctl start telnet.socket
#开启防火墙23端口
firewall-cmd --permanent --add-port=23/tcp --zone=public
firewall-cmd --reload
#windows打开cmd窗口,telnet即可登陆服务器
telnet [服务器ip]
#默认情况下,linux不允许root用户以telnet方式登录linux主机,移除securetty文件
mv /etc/securetty{,.bak}
之后就可以用root登录
#安装相关依赖,并打开两个窗口
yum install -y pam* zlib*
#备份原ssh配置
mv /etc/ssh /etc/ssh_bak
systemctl stop sshd
由于telnet是明文传输,不安全,所以升级完成后,必须停止该服务
安装OpenSSL
mkdir ./sshupdate
cd ./sshupdate
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/ --openssldir=/usr/ shared
make && make install
#完成后看下openssl版本
openssl version
OpenSSL 1.1.1w 21 Apr 2020
安装OpenSSH
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz
tar -xzvf openssh-89.4p1.tar.gz
cd openssh-9.4p1
./configure --with-zlib --with-ssl-dir --with-pam --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh
make && make install
cp contrib/redhat/sshd.init /etc/init.d/sshd
#完成后看下ssh版本
ssh -V
OpenSSH_9.4p1, OpenSSL 1.1.1w 21 Apr 2020
修改配置文件
vim /etc/ssh/sshd_config
查找#PermitRootLogin prohibit-password 改成 PermitRootLogin yes 并取消注释
同时如果端口非22端口,需要更改为对应端口
#关闭selinux
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
重启OpenSSH
mv /usr/lib/systemd/system/sshd.service /tmp
systemctl enable sshd
nohup systemctl restart sshd
测试
重开窗口连接对应服务器,如ssh跳转登录失败的,清空/root/.ssh/下面的文件即可。