由于Centos7自带的openssh版本过低且存在漏洞,所以为了安全考虑我们需要升级openssh到最高版本,旧版SSH存在以下漏洞:
OpenSSH 操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH 安全漏洞(CVE-2021-41617)
OpenSSH 安全漏洞(CVE-2017-15906)
OpenSSH 访问控制错误漏洞(CVE-2019-6109)
OpenSSH 信息泄露漏洞(CVE-2020-14145)
OpenSSH 安全漏洞(CVE-2016-20012)
因此我们要升级为最新2022 openssh 9版本,查看openssh版本命令:
ssh -V
安装前先安装及更新必须的依赖库:
yum install -y gcc gcc-c++ glibc make autoconf pcre-devel pam-devel yum install -y pam* zlib*
1.先通过yum更新,会将openssh自动更新到最高版本
yum -y update openssh
如果报错 /var/run/yum.pid已被锁定
则执行命令删除:
rm -rf /var/run/yum.pid
注:由于yum中的openssh未必已经同步了openssh中的最高版本,如果不是真正的最高版本,我们还要通过编译安装
2.利用yum升级并不能将ssh彻底更新到最新版本,然后还得需要编译安装
安装一些需要的环境:
yum -y install wget tar gcc make
准备好三样东西:
上传 zlib-1.2.12.tar.gz
,openssl-1.1.1p .tar.gz
,openssh-9.0p1.tar.gz
或网址下载,https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.9p1.tar.gz
三者源码下载地址:
http://www.zlib.net/
http://www.openssl.org/
http://www.openssh.org/
wget http://www.zlib.net/zlib-1.2.12.tar.gz wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz --no-check-certificat
解压
tar -zxvf zlib-1.2.12.tar.gz tar -zxvf openssh-9.0p1.tar.gz tar -zxvf openssl-1.1.1p.tar.gz
编译安装zlib
cd zlib-1.2.12 ./configure --prefix=/usr/local/zlib make && make install
编译安装openssl
cd .. cd openssl-1.1.1p ./config --prefix=/usr/local/ssl -d shared make && make install echo '/usr/local/ssl/lib' >> /etc/ld.so.conf ldconfig -v
安装openssh, 注意刚openssh-8.9.tar.gz解压后目录 是ssh
cd ../ cd openssh-9.0p1 ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl make && make install
卸载由yum安装的openssh
yum remove openssh
修改配置,启动前要将新生成的sshd_config修改以下几个地方
vim /usr/local/openssh/etc/sshd_config
PermitRootLogin yes PubkeyAuthentication yes PasswordAuthentication yes
或者用echo写入
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
复制文件到相应系统文件夹
cp /mnt/update/openssh-8.2p1/contrib/redhat/sshd.init /etc/init.d/sshd