shell脚本更新openssh9.8最新版本修复漏洞


本章为脚本编译安装openssh9.8最新版本

依赖安装包都放在了OPT目录下(安装包不一样也可以参照自行修改)

之前在解决服务器openssh漏洞是由于机器太多每次一个一个升级太麻烦

于是写下这个脚本,分享大家借鉴学习

以下为shell脚本主要内容,如果有疑问可以评论区留言(我会挨个解答)

#!/bin/bash

# 定义错误处理函数
error_exit() {
    echo "\$1" 1>&2
    exit 1
}

# 定义检查函数
check_and_install() {
    local cmd=\$1
    local install_cmd=\$2
    local message=\$3

    if ! command -v "$cmd" &> /dev/null; then
        echo "$message"
        eval "$install_cmd" || error_exit "安装失败: $message"
    else
        echo "$cmd 已经安装,跳过。"
    fi
}

# 切换到 /opt 目录
cd /opt || error_exit "无法切换到 /opt 目录"

# 解压缩软件包
for pkg in gcc.tar.gz openssh-9.8p1.tar.gz openssl-1.1.1l.tar.gz perl-5.26.0.tar.gz zlib-1.2.8.tar.gz; do
    if [ ! -d "${pkg%.tar.gz}" ]; then
        tar -zvxf "$pkg" || error_exit "解压 $pkg 失败"
    else
        echo "$pkg 已经解压,跳过。"
    fi
done

# 安装 RPM 包
cd gcc || error_exit "无法切换到 gcc 目录"
if ! rpm -q gcc &> /dev/null; then
    rpm -ivh --nodeps *.rpm || error_exit "安装 RPM 包失败"
else
    echo "GCC 已经安装,跳过。"
fi

# 编译和安装 zlib
cd /opt/zlib-1.2.8 || error_exit "无法切换到 /opt/zlib-1.2.8 目录"
if [ ! -f /usr/local/lib/libz.so ]; then
    ./configure || error_exit "配置 zlib 失败"
    make -j 4 || error_exit "编译 zlib 失败"
    make install || error_exit "安装 zlib 失败"
else
    echo "zlib 已经安装,跳过。"
fi

# 编译和安装 Perl
cd /opt/perl-5.26.0 || error_exit "无法切换到 /opt/perl-5.26.0 目录"
if ! command -v perl &> /dev/null; then
    ./Configure -- Dprefix=usr/local/perl-5.26.0 || error_exit "配置 Perl 失败"
    make -j 4 || error_exit "编译 Perl 失败"
    make install || error_exit "安装 Perl 失败"
else
    echo "Perl 已经安装,跳过。"
fi

# 编译和安装 OpenSSL
cd /opt/openssl-1.1.1l || error_exit "无法切换到 /opt/openssl-1.1.1l 目录"
if ! command -v openssl &> /dev/null; then
    ./config --prefix=/usr/local/openssl || error_exit "配置 OpenSSL 失败"
    make -j 4 || error_exit "编译 OpenSSL 失败"
    make install || error_exit "安装 OpenSSL 失败"
else
    echo "OpenSSL 已经安装,跳过。"
fi

# 更新动态链接库缓存
export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH
ldconfig || error_exit "更新动态链接库缓存失败"

# 编译和安装 OpenSSH
cd /opt/openssh-9.8p1 || error_exit "无法切换到 /opt/openssh-9.8p1 目录"
if ! command -v sshd &> /dev/null; then
    ./configure --with-ssl-dir=/usr/local/openssl || error_exit "配置 OpenSSH 失败"
    make -j 4 || error_exit "编译 OpenSSH 失败"
    make install || error_exit "安装 OpenSSH 失败"
else
    echo "OpenSSH 已经安装,跳过。"
fi

# 启动 OpenSSH 服务并检查版本
/usr/local/sbin/sshd || error_exit "启动 OpenSSH 服务失败"
/usr/local/sbin/sshd -V || error_exit "检查 OpenSSH 版本失败"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值