一、升级原因
由于centos7中自带的openssh版本太低,出现的漏洞较多,目前只有以升级的方式完全规避漏洞。
在升级之前一定要先开启telnet,并且测试连接没有问题后开始升级。
二、获取版本
目前获取版本的途径是获取的阿里云的openssh的镜像,以最新的9.6版本为例进行测试安装。如果是联网情况下,可以使用wget直接获取相应的安装包wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz。也可以直接去下载然后上传。
三、安装依赖包
因为安装依赖包比较费时间,一般使用yum安装,如果没有联网,最好找一台同样系统版本的进行下载,然后拷贝后安装,需要下载的依赖包如下:yum reinstall --downloadonly --downloaddir=/root/openssh/download wget gcc pam-devel libselinux-devel zlib-devel。当然,这些依赖包也可以在阿里云的镜像中下载。其中openssl-devel的安装包版本太低,也需要编译安装1.1.1及以上版本。
四、解压安装包
因为需要离线安装,且centos不支持在线版本升级,所以需要编译安装,在解压时需要解压到一个自己熟悉的路径,然后再编译安装就可以。tar -zxvf openssh-9.6p1.tar.gz。
五、卸载原有的openssh
卸载语句:rpm -e --nodeps `rpm -qa | grep openssh`,卸载后查看语句:rpm -qa openssh。
如果原有的openssh是编译安装的,需要找到编译安装包,进行make uninstall。
六、编译配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
其中--with-ssl-dir=/usr/local/ssl这个路径一定是编译安装的路径,并不是这个默认路径。
七、编译安装
make && make install
八、其他步骤
调整权限:chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
chmod u+x /etc/init.d/sshd
如果在使用systemctl status sshd的时候提示无法找到sshd.service服务,则需要cd /etc/init.d/sshd,然后service sshd start启动sshd服务。
然后使用ssh -V查看目前系统中ssh版本是否为9.6版本。
升级完成后可能会出现shell无法登录的问题,修改/etc/ssh/sshd_config文件:
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
UsePAM yes。