当前位置: 首页 > news >正文

centos7.9的openssh漏洞修复脚本

通过网盘分享的文件:centos漏洞修复ssh.zip
链接: https://pan.baidu.com/s/1yQ4iowqrASuv8gv9OdfIGA?pwd=6666 提取码: 6666 
--来自百度网盘超级会员v6的分享

centos漏洞修复ssh.zip - 蓝奏云 蓝奏云分享地址

使用说明:

centos7.9的openssh漏洞修复脚本,天天让我修漏洞

此脚本适用于内网环境,只有本地iso的yum源,把iso挂上,确保系统光盘已插入或ISO镜像

将脚本保存为 ssh_upgrade.sh

上传两个源码包到 /usr/local/src/ 目录:

openssl-1.1.1w.tar.gz

openssh-9.9p2.tar.gz

给脚本添加执行权限:chmod +x ssh_upgrade.sh

执行脚本:./ssh_upgrade.sh

注意事项:
windows写的,执行一下,转换'\r'脚本格式 sed -i 's/\r$//' script.sh
建议在物理控制台或通过nohup方式执行,避免SSH连接中断

脚本执行完成后请验证SSH连接是否正常

如果遇到问题,可以查看备份文件在 /root/ssh_backup/ 目录

确保系统光盘已插入或ISO镜像已挂载到/dev/sr0

此脚本会清空备份/etc/yum.repos.d/     只留下local.repo
要重新执行脚本,只需删除标记文件:

rm -f /root/.ssh_upgrade_completed /root/.ssh_upgrade_started

#!/bin/bash# 检查是否已经执行过升级
if [ -f /root/.ssh_upgrade_completed ]; thenecho "检测到之前已经完成SSH升级,跳过执行。"echo "如需重新执行,请删除 /root/.ssh_upgrade_completed 文件"exit 0
fi# 记录执行开始
echo "开始执行SSH升级脚本..."
date > /root/.ssh_upgrade_started# 挂载光盘(如果尚未挂载)
if ! mountpoint -q /mnt; thenecho "挂载光盘..."mount /dev/sr0 /mnt
elseecho "光盘已经挂载,跳过挂载步骤"
fi# 创建本地yum源配置(如果尚未创建)
if [ ! -f /etc/yum.repos.d/local.repo ]; thenecho "创建本地yum源配置..."mkdir /etc/yum.repos.d/bakmv /etc/yum.repos.d/* /etc/yum.repos.d/bak/cat > /etc/yum.repos.d/local.repo << 'EOF'
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOFyum makecache
elseecho "yum源配置已存在,跳过创建"
fi# 创建SSH备份目录(如果尚未创建)
if [ ! -d /root/ssh_backup ]; thenecho "创建SSH备份目录..."mkdir -p /root/ssh_backupcp -r /etc/ssh/* /root/ssh_backup/ cp /etc/sysconfig/sshd /root/ssh_backup/
elseecho "SSH备份目录已存在,跳过创建"
fi# 安装编译依赖
echo "安装编译依赖..."
yum install -y gcc make zlib-devel perl pam-devel tcp_wrappers-devel# 切换到源码目录
cd /usr/local/src# 检查源码文件是否存在
if [[ ! -f openssl-1.1.1w.tar.gz ]]; thenecho "错误:openssl-1.1.1w.tar.gz 文件不存在"exit 1
fiif [[ ! -f openssh-9.9p2.tar.gz ]]; thenecho "错误:openssh-9.9p2.tar.gz 文件不存在"exit 1
fi# 检查是否已安装目标版本的OpenSSL
if openssl version | grep -q "1.1.1w"; thenecho "OpenSSL 1.1.1w 已经安装,跳过OpenSSL升级"
elseecho "升级OpenSSL..."tar -zxf openssl-1.1.1w.tar.gzcd openssl-1.1.1w./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlibmake && make install# 配置OpenSSL库路径echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.confldconfig -vif [ -f /usr/bin/openssl ]; thenmv /usr/bin/openssl /usr/bin/openssl.oldfiln -s /usr/local/openssl/bin/openssl /usr/bin/openssl# 验证OpenSSL版本echo "OpenSSL版本信息:"openssl version
fi# 检查是否已安装目标版本的OpenSSH
if ssh -V 2>&1 | grep -q "9.9p2"; thenecho "OpenSSH 9.9p2 已经安装,跳过OpenSSH升级"
elseecho "安装OpenSSH..."cd /usr/local/srctar -zxf openssh-9.9p2.tar.gzcd openssh-9.9p2./configure \--prefix=/usr/local/openssh-9.9p2 \--sysconfdir=/etc/ssh \--with-ssl-dir=/usr/local/openssl \--with-zlib \--with-pam \--with-md5-passwords \--with-tcp-wrappersmake && make install# 配置OpenSSHif [ -f /usr/sbin/sshd ]; thenmv /usr/sbin/sshd /usr/sbin/sshd.oldfiln -sf /usr/local/openssh-9.9p2/sbin/sshd /usr/sbin/sshdif [ -f /usr/bin/ssh ]; thenmv /usr/bin/ssh /usr/bin/ssh.oldfiln -sf /usr/local/openssh-9.9p2/bin/ssh /usr/bin/ssh
fi# 修复密钥权限
echo "修复密钥权限..."
chmod 600 /etc/ssh/ssh_host_*_key
ssh-keygen -A# 更新PAM配置
echo "更新PAM配置..."
sed -i 's@/usr/sbin/sshd@/usr/local/openssh-9.9p2/sbin/sshd@g' /etc/pam.d/sshd# 创建systemd服务文件
echo "创建systemd服务文件..."
cat > /usr/lib/systemd/system/sshd.service << 'EOF'
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target[Service]
Type=exec
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/local/openssh-9.9p2/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=3s[Install]
WantedBy=multi-user.target
EOF# 备份并创建新的SSH配置
if [ ! -f /etc/ssh/sshd_config.bak ]; thenecho "备份SSH配置..."cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
fiecho "创建新的SSH配置..."
cat > /etc/ssh/sshd_config << 'EOF'
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
LogLevel INFO
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
X11Forwarding yes
PrintMotd no
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
EOF# 重载系统配置并重启服务
echo "重载系统配置并重启服务..."
systemctl daemon-reload
systemctl restart sshd# 验证安装结果
echo "OpenSSH版本信息:"
ssh -V
echo "OpenSSL版本信息:"
openssl version# 标记脚本已完成
date > /root/.ssh_upgrade_completed
echo "升级完成,请验证SSH连接是否正常"# 提示如何重新执行脚本
echo "如需重新执行脚本,请删除标记文件: rm -f /root/.ssh_upgrade_completed /root/.ssh_upgrade_started"

http://www.dtcms.com/a/357896.html

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(137)
  • 响应式编程框架Reactor【5】
  • PostgreSQL表空间(Tablespace)作用(管理数据库对象的存储位置)(pg_default、pg_global)
  • STL库——list(类模拟实现)
  • 将LLM模型“钉”在电路板上:用电阻矩阵实现物理推理引擎
  • Nacos-3.0.3 适配PostgreSQL数据库
  • openGauss笔记
  • rabbitMQ延时队列实现,怎么保证消息的幂等
  • HTML 核心元素实战:超链接、iframe 框架与 form 表单全面解析
  • 【WDG协议栈】AUTOSAR架构下WDG模块软硬件功能详解
  • 基于单片机指纹考勤系统/智能考勤
  • ⸢ 叁 ⸥ ⤳ 默认安全:概述与建设思路
  • 【Day 33】Linux-MySQL 备份与恢复详解
  • 从分子工具到技术革新:链霉亲和素 - 生物素系统与 M13 噬菌体展示的交叉应用解析
  • 针对 “TCP 数据传输机制” 的攻击
  • vue2下拉菜单
  • 服务器托管多少钱一年?服务器托管收费标准
  • C++day2作业
  • TuringComplete游戏攻略(2.2存储器)
  • 【C++】类和对象(终章)
  • 数值分析——误差的来源与分类、误差的基本概念(绝对误差、相对误差、有效数字)
  • 世界模型的典型框架与分类
  • react性能优化有哪些
  • 卷积神经网络项目:基于CNN实现心律失常(ECG)的小颗粒度分类系统
  • 拆解《AUTOSAR Adaptive Platform Core》(Core.pdf)—— 汽车电子的 “基础技术说明书”
  • 开发指南136-设置零值不显示
  • Java中使用JSONUtil处理JSON数据:从前端到后端的完美转换
  • docker命令(二)
  • vue+Django 双推荐算法旅游大数据可视化系统Echarts mysql数据库 带爬虫
  • 指纹云手机网络环境隔离技术:筑牢海外社媒多账号运营安全屏障