业务背景:公司的集群检测出来系统漏洞,说是openssh版本过低, 需要升级openssh,由于内网环境,需要离线安装
离线需要的安装包如下:
安装gcc需要的安装包:
cpp-4.8.5-36.el7.x86_64.rpm
gcc-4.8.5-36.el7.x86_64.rpm
kernel-headers-3.10.0-957.el7.x86_64.rpm
glibc-devel-2.17-260.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
glibc-headers-2.17-260.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm
openssh的下载地址:选择一个你喜欢的版本即可
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
我用的版本是:openssh-7.9p1.tar.gz
第一步:查看openssh、openssl的版本信息
openssh7.9依赖 >= zlib1.1.4 并且 openssl >= 1.0.1(不能为1.1.x版本)
命令:ssh -V
查看当前服务器zlib版本:满足要求 > zlib1.1.4
命令:rpm -qa zlib
第二步:查看gcc的版本,如果没有gcc的环境,需要安装gcc
如果是4.8.5的版本就可以了,不需要弄
命令:gcc -v
如果没有gcc,先把gcc相关的依赖包放到一个目录下,在该目录下执行安装gcc的安装命令
命令:rpm -Uvh *.rpm --nodeps --force
验证gcc是否安装成功:
命令:gcc -v
第三步:安装pam-devel的版本,如果没有pam-devel的环境,需要安装pam-devel
先查看是否有pam已经安装
命令:rpm -qa |grep pam
没有的话需要安装,版本低的话也可以升级
命令:rpm -Uvh *.rpm --nodeps --force
第四步:编译openssh
解压openssh的压缩包
命令:tar -zxvf openssh-7.9p1.tar.gz
进入解压好的目录
命令:cd openssh-7.9p1
编译:
命令:./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
如果报错:configure: error: * zlib.h missing - please install first or check config.log *
表示未安装 openssl-devel
第五步:卸载旧的openssh
备份openssh配置文件:
命令:cp -r /etc/ssh /etc/ssh.old
查看已安装的openssh:
命令:rpm -qa|grep openssh
卸载openssh,后面的文件是你上一步查询出来的文件名,上面查询出来的文件都要删除,应该是3个文件
命令:rpm -e --nodeps openssh-clients-7.4p1-16.el7.x86_64
再次查看,应该没有openssh相关信息了,说明卸载完成
命令:rpm -qa|grep openssh
第六步:安装新的openssh
之前安装环境已进行./configure,这里直接make即可
命令:cd openssh-7.9p1
命令:make
修改文件权限:提高安全性
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
安装
命令:make install
配置
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-7.9p1
install -v -m644 INSTALL LICENCE OVERVIEW README*
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1
第七步:设置开机启动
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
systemctl start sshd
第八步:查看已安装版本信息,说明升级成功
命令:sshd -v