openssh升级

 
低版本openssh存在安全漏洞,需要升级到高版本。 有更简单的请看制作 RPM包的文章

二、升级前置动作

openssh升级属于高风险动作,需要放在业务低峰期,且保证telnet服务或BMC控制台可以打开

1、确认是否安装xinetd、telnet-server服务。

#rpm -qa|egrep "xinetd|telnet-server"

 
 
 

2、如果没有安装则需要手动安装。

#yum install xinetd  telnet-server -y 

3、启动服务。

# systemctl enable telnet.socket

# systemctl enable xinetd

# systemctl start telnet.socket

# systemctl start xinetd

4、查看服务是否启动,23端口是否被占用。

 
 
 

5、从其他机器telnet 这台机器确认是否能登陆。

telnet 192.168.xxx.xx

如果无法安装telnet,请确保BMC可以打开远程控制台登陆服务器。

 

 

三、升级openssh

1、 查看系统目前openssh版本

本次将升级openssh至8.8p。

#ssh -V

 
 
 

2、升级openssl

openssh依赖openssl,升级openssh前先升级openssl,参考openssl升级

3、 依赖包安装

#yum install -y zlib zlib-devel pam-devel  gcc

#rpm -qa|egrep "zlib|zlib-devel|pam-devel|gcc"     #查看依赖包

 
 
 

 

4、  将安装包上传/tmp目录并解压openssh

 
openssh-8.8p1.tar.gz
2MB
 

 

#cd /tmp

 

# tar -xf openssh-8.8p1.tar.gz

 

5、 备份原ssh

 

#cp -r /etc/ssh /etc/ssh.bak

#cp -a /usr/sbin/sshd /usr/sbin/sshd.bak

#cp -a /usr/bin/ssh /usr/bin/ssh.bak

#cp -r /etc/pam.d/sshd  /etc/pam.d/sshd.bak

 

6、 编译安装

 

#cd /tmp/ openssh-8.8p1/

# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd

报错一:configure: error: OpenSSL library not found.

 
 
 

解决:rpm -ivh openssl11-devel-1.1.0i-1.el7.x86_64.rpm --nodeps --force

然后重新执行configure

 
openssl11-devel-1.1.0i-1.el7.x86_64.rpm
2MB
 

 

#chmod -R 600 /etc/ssh   #设置目录权限

 

#make

#make install       #安装

 

7、 替换新的启动脚本,设置ssh开机自启

#cp  /tmp/openssh-8.8p1/contrib/redhat/sshd.init /etc/init.d/sshd

#chmod +x /etc/init.d/sshd

#chkconfig --add sshd

#systemctl enable sshd

#mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak  #移出老sshd的启动文件

#mv /usr/lib/systemd/system/sshd.socket /usr/lib/systemd/system/sshd.socket.bak

#vim /etc/init.d/sshd

在$SSHD $OPTIONS && success || failure上方添加

OPTIONS="-f /etc/ssh/sshd_config"

8、修改ssh配置

#vim /etc/ssh/sshd_config

PermitRootLogin yes  #允许root用户登陆,确保该参数没有被注释。

注释GSSAPI相关参数

 
 
 

vim /etc/ssh/ssh_config

GSSAPIAuthentication yes    #注释该参数

 
 
 

 

9、重启服务,生效修改的参数

#systemctl daemon-reload

#systemctl restart sshd

#systemctl status sshd

 

四、结果验证

1、查看版本

# ssh -V

 
 
 

2、查看sshd_config配置文件,正确配置如下图

grep -v ^# /etc/ssh/sshd_config |grep -v ^$

 
 
 

3、登陆root用户后查看环境变量PATH

env|grep PATH 缺少/usr/bin/local

 
 
 

解决: vim /etc/profile 添加pathmunge /usr/local/bin

 
 
 

source /etc/profile

source .bashrc

source .bash_profile

 

五、回退方案

 

mv /usr/lib/systemd/system/sshd.socket.bak /usr/lib/systemd/system/sshd.socket

mv /usr/lib/systemd/system/sshd.service.bak  /usr/lib/systemd/system/sshd.service

mv /etc/init.d/sshd /tmp/

还原ssh配置

mv /etc/ssh /etc/ssh.new

mv /etc/ssh.bak/ /etc/ssh

chmod -R 600 /etc/ssh 

还原sshd、ssh

systemctl daemon-reload

systemctl stop sshd

cp -a /usr/sbin/sshd /usr/sbin/sshd.new

cp -a /usr/sbin/sshd.bak /usr/sbin/sshd

cp -a /usr/bin/ssh /usr/sbin/sh.new

cp -a /usr/bin/ssh.bak /usr/bin/ssh

 

systemctl daemon-reload

systemctl restart sshd

systemctl enable sshd

验证

 
posted @ 2022-04-25 16:31  CF211  阅读(1546)  评论(0编辑  收藏  举报