linux 7.2 openssh升级,Centos7 升级OpenSSH 8.2p1的详细步骤【附安装包、脚本】

随着OpenSSH更新,之前的版本也存在了一些已知漏洞,给系统带来安全风险,OpenSSH 8.2p1版本已经发布,该版本的一些新特性最主要的就是加密方式的改变,禁用了ssh-rsa算法;支持FIDO/U2F硬件认证器。

一、升级说明

1、升级OpenSSH后,原有公钥失效,信任关系需要重新配置;

2、升级过程需要停止sshd服务,会导致ssh和sftp无法使用;

3、升级需要关闭防火墙服务;

4、升级需要关闭selinux服务;

5、升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包(推荐通过系统ISO安装)

6、升级过程中需要刷新lib库:ldconfig -v;

7、升级顺序:顺序是zlib库-> openssl -> openssh;

8、升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel等依赖包;

二、升级准备

1、确保YUM功能可用;

2、下载下面的安装包上传到系统;

三、升级操作

执行下面的脚本(保存为*.sh文件,并赋予执行权限,与上面三个压缩包放在同一个目录下)或者按脚本步骤进行操作,考虑到不同系统配置环境不通,建议预先进行测试。请务必开启telnet,以免升级过程中断导致无法连接系统。#!/bin/bash

clear

echo ------------------------------------------

echo        CentOS7 openssh升级到8.2p1

echo               By feichai

echo         生产环境使用前请做好测试

echo ------------------------------------------

sleep 5s

clear

echo 安装进程开始

echo $(date +%F-%T)  安装进程开始…… > update.log

sleep 1s

clear

echo 刷新yum元数据缓存

echo $(date +%F-%T)  刷新yum元数据缓存开始…… >> update.log

sleep 2s

yum makecache

echo $(date +%F-%T)  刷新yum元数据缓存结束…… >> update.log

sleep 1s

clear

echo 检测安装telnet服务

echo $(date +%F-%T)  检测telnet服务开始…… >> update.log

sleep 1s

echo 尝试启动telnet服务

sleep 2s

systemctl restart telnet.socket &&  systemctl restart xinetd

ps -ef |grep xinetd | egrep -v grep > /dev/null

if [ $? -eq 0 ]

then

echo 检测到telnet服务已启动……

systemctl enable telnet.socket

systemctl enable xinetd

echo $(date +%F-%T)  检测到telnet服务并启动…… >> update.log

sleep 2s

else

echo 未检测到telnet服务,开始安装服务……

echo $(date +%F-%T)  未检测到telnet服务,开始安装…… >> update.log

sleep 2s

yum -y install xinetd telnet-server

cp /etc/securetty /etc/securetty.bak

echo "pts/0" >> /etc/securetty

echo "pts/1" >> /etc/securetty

echo $(date +%F-%T)  安装telnet服务结束…… >> update.log

sleep 2s

clear

echo 安装telnet服务结束,启动服务……

echo $(date +%F-%T)  启动telnet服务开始…… >> update.log

systemctl restart telnet.socket &&  systemctl restart xinetd

echo $(date +%F-%T)  启动telnet服务结束…… >> update.log

sleep 1s

fi

clear

echo 关闭SElinux并禁用……

echo $(date +%F-%T)  关闭SElinux并禁用开始…… >> update.log

sleep 2s

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

cat /etc/selinux/config

sleep 2s

echo $(date +%F-%T)  关闭SElinux并禁用结束…… >> update.log

clear

echo 安装程序依赖包……

echo $(date +%F-%T)  安装程序依赖包开始…… >> update.log

sleep 2s

yum -y install gcc gcc-c++ make pam pam-devel openssl-devel pcre-devel perl zlib-devel

echo $(date +%F-%T)  安装程序依赖包结束…… >> update.log

sleep 1s

clear

echo 停止并卸载原有ssh

echo $(date +%F-%T)  停止并卸载原有ssh开始…… >> update.log

sleep 2s

systemctl stop sshd

cp -r /etc/ssh /etc/ssh.old

cp /etc/init.d/ssh /etc/init.d/ssh.old

rpm -qa | grep openssh

sleep 1s

rpm -e `rpm -qa | grep openssh` --nodeps

rpm -qa | grep openssh

echo $(date +%F-%T)  停止并卸载原有ssh结束…… >> update.log

sleep 1s

clear

echo 安装zlib

echo $(date +%F-%T)  安装zlib开始…… >> update.log

sleep 2s

tar -zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure --prefix=/usr/local/zlib && make && make install

ls -l /usr/local/zlib

cd ..

echo $(date +%F-%T)  安装zlib结束…… >> update.log

sleep 1s

clear

echo 配置zlib

echo $(date +%F-%T)  配置zlib开始…… >> update.log

echo "/usr/local/zlib/lib" >> /etc/ld.so.conf.d/zlib.conf

ldconfig -v

sleep 1s

echo $(date +%F-%T)  配置zlib结束…… >> update.log

clear

echo 安装openssl

echo $(date +%F-%T)  安装openssl开始…… >> update.log

sleep 2s

tar -zxvf openssl-1.0.2r.tar.gz

cd openssl-1.0.2r

./config shared zlib && make && make install

cd ..

echo $(date +%F-%T)  安装openssl结束…… >> update.log

sleep 1s

clear

echo 配置openssl

echo $(date +%F-%T)  配置openssl开始…… >> update.log

sleep 2s

mv /usr/bin/openssl /usr/bin/openssl.bak

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.d/ssl.conf

ldconfig -v

openssl version -a

sleep 1s

clear

echo $(date +%F-%T)  配置openssl结束…… >> update.log

echo 安装openssh

echo $(date +%F-%T)  安装openssh开始…… >> update.log

sleep 2s

rm -rf /etc/ssh

tar -zxvf openssh-8.2p1.tar.gz

cd openssh-8.2p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib --with-md5-passwords

make

sleep 1s

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

cd ..

echo $(date +%F-%T)  安装openssh结束…… >> update.log

sleep 1s

clear

echo 配置openssh

echo $(date +%F-%T)  配置openssh开始…… >> update.log

sleep 2s

echo "PasswordAuthentication yes"   >> /etc/ssh/sshd_config

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

echo 'Banner /etc/issue' >> /etc/ssh/sshd_config

cp -p openssh-8.2p1/contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chmod 600 /etc/ssh/ssh_host_rsa_key

chmod 600 /etc/ssh/ssh_host_ecdsa_key

chmod 600 /etc/ssh/ssh_host_ed25519_key

chkconfig --add sshd

chkconfig sshd on

systemctl restart sshd

clear

echo 安装ssh2支持

yum install libssh2 -y

sleep 1s

clear

echo $(date +%F-%T)  配置openssh结束…… >> update.log

systemctl status sshd

if [ $? -eq 0 ]

then

echo SSH安装成功,开始关闭并禁用telnet

echo $(date +%F-%T)  关闭并禁用telnet开始…… >> update.log

sleep 2s

systemctl stop telnet.socket &&  systemctl stop xinetd

systemctl disable telnet.socket &&  systemctl disable xinetd

echo $(date +%F-%T)  关闭并禁用telnet结束…… >> update.log

clear

echo 安装进程结束

sleep 2s

echo $(date +%F-%T)  安装进程结束…… >> update.log

else

echo SSH未成功安装或配置,安装进程即将退出,请检查……

echo $(date +%F-%T)  错误,SSH未成功安装或配置…… >> update.log

sleep 3s

echo -e "\n"

echo 安装进程结束

echo $(date +%F-%T)  安装进程结束…… >> update.log

fi

ssh -V

systemctl status sshd

注意:如果脚本执行完毕后,ssh进程未正常启动或安装报错,请根据错误信息及时排错。“坑一直有,多踩几次就好了!”

升级完成后应该显示如下图所示:

1b25a85422ef70c07d38785e6995f88b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值