注:由于Centos7自带的openssh版本过低且存在漏洞,所以为了安全考虑我们需要升级openssh到最高版本
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
3.上传 zlib-1.2.11.tar.gz,openssl-1.1.1d .tar.gz,openssh-8.2p1.tar.gz
从官网下载以上压缩包并上传到服务器并解压
tar -zxvf zlib-1.2.11.tar.gz
tar -zxvf openssl-1.1.1q.tar.gz
tar -zxvf openssh-9.1p1.tar.gz
4.安装zlib
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
5.安装openssl
cd openssl-1.1.1q/
./config --prefix=/usr/local/ssl -d shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v
6.安装
cd openssh-9.1p1/
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install
7.卸载由yum安装的openssh
yum remove openssh
8.修改配置
启动前要将新生成的sshd_config修改以下几个地方
vim /usr/local/openssh/etc/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
复制文件到相应系统文件夹
cp /home/apache/openssh-9.1p1/contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/* /usr/bin/
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
更新升级openssl
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
9.启动
1、启动
systemctl start sshd.service
2、重启
systemctl restart sshd.service
3、查看状态
sshd -t
4、查看升级结果
ssh -V
openssl version