第一步、构建openssh的rpm包
(备注:应该也可以直接编译源代码使用,因为还要安装在其它机器上,所以我采用的是编译成rpm包,编译步骤的参照网址:https://blog.csdn.net/fhqsse220/article/details/75502657 )
编译过程:
mkdir -p /usr/src/redhat/{SOURCES,SPECS}
cd /usr/src/redhat/SOURCES/
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz
tar xfz openssh-7.8p1.tar.gz openssh-7.8p1/contrib/redhat/openssh.spec
mv openssh-7.8p1/contrib/redhat/openssh.spec ../SPECS/
chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec
cp /usr/src/redhat/SPECS/openssh.spec /usr/src/redhat/SPECS/openssh.spec_def
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec
mkdir -p ~/rpmbuild/SOURCES/
cp /usr/src/redhat/SOURCES/openssh-7.8p1.tar.gz ~/rpmbuild/SOURCES/
cd /usr/src/redhat/SPECS/
rpmbuild -ba openssh.spec
编译完成:
查看目录结构:tree -L 2 /root/rpmbuild/
查看rpm包:ll /root/rpmbuild/RPMS/x86_64/openssh-*
其中:1、每个版本会编译出四个rpm包。
2、如果有报错可以参照:https://blog.csdn.net/qq_42609381/article/details/82855043
3、如果还有问题,还可以这样简单解决,比如编译openssh-7.9p1时,rpmbuild -ba openssh.spec会出现一些错误,尝试使用openssh-7.5p1中openssh.spec替代7.9中的编译,也可以编译出rpm包,最后测试也可以解决ssh的漏洞。
第二步、安装
2.1 卸载
在安装新的openssh之前一定要将已经安装过的openssh卸载掉,否则会出现各种难以捉摸的异常问题。
卸载老版本openssh的方法,(下面是截取我安装脚本中的卸载部分):
oldOpenssh=`rpm -qa |grep openssh`
for str in $oldOpenssh
do
rpm -e $str --nodeps
done
2.2 安装
安装新openssh的方法,采用强制安装的方法,避免出现依赖报错
rpm -iv --force --nodeps *.rpm
警告:这时如果直接重启肯定就完了,ssh是启动失败,
解决方法:1、打开/etc/ssh/sshd_config 找到 以PermitRootLogin开头的行,如果后面有prohibit-password,改为 PermitRootLogin yes;
附上我修改的方法:
bin/mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cat /etc/ssh/sshd_config.bak| sed -e "s/^[[:space:]]*[#]*PermitRootLogin.*/PermitRootLogin yes/" > /etc/ssh/sshd_config
2.3 加权限
给/etc/ssh中的配置文件加权限
chmod 600 /etc/ssh/ssh_host*key
chmod 600 /etc/ssh/ssh_host*key.pub
重启机器,看效果。