首页 > 其他分享 >适用于openEuler系统升级openssh9.8p1和openssl3.3.1

适用于openEuler系统升级openssh9.8p1和openssl3.3.1

时间:2024-12-03 12:21:50浏览次数:5  
标签:openssl3.3 p1 local 35m openssl echo openssh9.8 root 0m

目前在openEuler2203 LTS上测试通过

#!/bin/bash
. /etc/os-release
OpensslVersion=3.3.1
OpensslVersion1=`openssl version | awk  '{print $2}'`
OpensshVersion=9.8p1
CURRENT_DATE=$(date +%Y%m%d%H%M%S)

echo -e "\e[1;35m====================================================================\e[0m"
echo -e "\e[1;35m现在已安装的版本\e[0m"
ssh -V
echo -e "\e[1;35m本次安装的版本是openssl-${OpensslVersion}\e[0m"
echo -e "\e[1;35m本次升级的安装版本openssh-${OpensshVersion}\e[0m"
echo -e "\e[1;35m离线安装,请提前准备好对应版本的压缩包放在root目录下\e[0m"
echo -e "\e[1;35m====================================================================\e[0m"
echo -e "\e[1;35m不想安装请在五秒内终止脚本\e[0m\n"

for i in {5..1}
do
    echo -n "${i} "
    echo -ne "\r"
    sleep 1
done



check_system(){
#if [ $ID = 'openEuler' ];then
#    echo -e "\e[1;35m检测系统为openEuler,脚本支持执行\e[0m"
#else
#    echo -e "\e[1;33m检测系统不是openEuler,脚本不支持\e[0m"
#    exit
#fi
if [  $ID = "openEuler" -o  $ID = "kylin" ]; then
    echo -e "\e[1;31m当前系统是:$NAME,版本号:$VERSION_ID\e[0m"
else
    echo -e "\e[1;31m当前系统脚本不支持。\e[0m" 
fi
}


check_openssl_version(){
if [[ ${OpensslVersion1}  < 3 ]];then
    echo -e "\e[1;35m检测到OpenSSL版本低于3,支持升级。\e[0m"
else
    echo -e "\e[1;33m当前OpenSSL版本高于3,脚本不支持\e[0m"
    exit
fi
}


if [ -e "/root/$0" ];then
    echo -e ""
else
    echo -e "\e[1;33m请将脚本文件放在root目录下执行\e[0m"
    exit
fi








check_files() {
    local files=(
        "/root/openssl-${OpensslVersion}.tar.gz"
        "/root/openssh-${OpensshVersion}.tar.gz"
    )
    for file in "${files[@]}"; do
        if [ ! -e "$file" ]; then
            echo -e "\e[1;33m文件 $file 不存在,请放置在 /root 目录。\e[0m"
            exit 1
        fi
    done
    echo -e "\e[1;35m所有必要文件均已存在。\e[0m"
}




#check_file(){

#   local file=$1
#   local description=$2
#   if [ -e "$file" ]; then
#       echo -e "\e[1;35m${description}文件存在\e[0m"
#   else
#       echo -e "\e[1;33m${description}文件不存在,请将文件放在root目录下\e[0m"
#       exit
#   fi


#heck_file "/root/openssl-${OpensslVersion}.tar.gz" "openssl-${OpensslVersion}"
#heck_file "/root/openssh-${OpensshVersion}.tar.gz" "openssh-${OpensshVersion}"

#if [ -e "/root/openssl-${OpensslVersion}.tar.gz" ];then
#    echo -e "\e[1;35mopenssl-${OpensslVersion}文件存在\e[0m"
#else
#    echo -e "\e[1;33mopenssl-${OpensslVersion}文件不存在,请将文件放在root目录下\e[0m"
#    exit
#fi



#if [[ -e "/root/openssh-${OpensshVersion}.tar.gz" ]];then
#    echo -e "\e[1;35mopenssh-${OpensshVersion}文件存在\e[0m"
#else
#    echo -e "\e[1;33mopenssh-${OpensshVersion}文件不存在,请将文件放在root目录下\e[0m"
#    exit
#fi



#yum clean all 
#yum makecache



sofeware_install(){
echo -e "\e[1;35m===================================================安装telnet===================================================\e[0m"
software=(
    "telnet"
    "telnet-server"
    "xinetd"
    )
for i in ${software[@]}
do
rpm -q $i &> /dev/null && echo -e "$i\t\e[1;32m已安装\e[0m" || { yum -y install $i &> /dev/null; echo -e "$i\t\e[1;35m安装成功\e[0m" ; }
done


systemctl enable --now  xinetd.service
systemctl enable --now  telnet.socket


cat >>/etc/securetty<<EOF
pts/0 
pts/1
EOF



echo -e "\e[1;35m手动测试telnet连接是否正常\e[0m"
}




update_openssl(){
echo -e "\e[1;35m===================================================升级openssl===================================================\e[0m"

#yum install  -y gcc gcc-c++ glibc make
software=(
    "tar"
    "gcc"
    "gcc-c++"
    "openssl-devel"
    "zlib-devel"
    "make"
    "glibc"
    "autoconf"
    "pcre-devel"
    "pam-devel"
    "pam*"
    )
for i in ${software[@]}
do
rpm -q $i &> /dev/null && echo -e "$i\t\e[1;32m已安装\e[0m" || { yum -y install $i &> /dev/null; echo -e "$i\t\e[1;35m安装成功\e[0m" ; }
done


  



tar -zxvf /root/openssl-${OpensslVersion}.tar.gz
if [ -e /root/openssl-${OpensslVersion} ];then
    echo -e "\e[1;35mopenssl解压成功\e[0m"
else
    echo -e "\e[1;35mopenssl解压失败\e[0m"
    exit
fi
cd /root/openssl-${OpensslVersion}
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib


make && make install  || { echo -e "\e[1;31m编译或安装失败,执行make clean 重新编译\e[0m"; exit 1; }                                             

sudo mv /usr/bin/openssl /usr/bin/openssl-${CURRENT_DATE}
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
sudo echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf.d/openssl.conf
echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl-3.conf

sudo ldconfig

cd
#查看版本 是否安装成功
echo -e "\e[1;35m===================================================升级后版本===================================================\e[0m"
ldconfig
openssl version


}

sleep 5







update_openssh(){

echo -e "\e[1;35m===================================================升级openssh===================================================\e[0m"


tar zxf /root/openssh-${OpensshVersion}.tar.gz 
if [ -e /root/openssh-${OpensshVersion} ];then
    echo -e "\e[1;35mopenssh解压成功\e[0m"
else
    echo -e "\e[1;35mopenssh解压失败\e[0m"
    exit
fi






cd /root/openssh-${OpensshVersion}/
./configure  --with-ssl-dir=/usr/local/openssl
#./configure --with-ssl-dir=/usr/local/openssl \
#            --with-cflags="-I/usr/local/openssl/include" \
#            --with-libs="/usr/local/openssl/lib64"


make && make install || { echo -e "\e[1;31m编译或安装失败,执行make clean 重新编译\e[0m"; exit 1; }   


systemctl restart sshd

sleep 3
echo -e "\e[1;35m===================================================更新后openssh版本===================================================\e[0m"
#export LD_LIBRARY_PATH=/usr/local/openssl/lib64:$LD_LIBRARY_PATH
echo 'export LD_LIBRARY_PATH=/usr/local/openssl/lib64:${LD_LIBRARY_PATH:-""}' >> /etc/profile
echo "export PATH=/usr/local/bin:$PATH"  >>/etc/profile

ldconfig
source /etc/profile
ssh -V
}



main() {
    check_system
    check_openssl_version
    check_files
    sofeware_install
    update_openssl
    update_openssh
}

main "$@"

 

标签:openssl3.3,p1,local,35m,openssl,echo,openssh9.8,root,0m
From: https://www.cnblogs.com/smlience/p/18583822

相关文章

  • P10046 [CCPC 2023 北京市赛] 哈密顿(贪心)
    题意给定\(2n\)个点,第\(i(1\lei\len)\)个点的点权为\(a_i\),第\(j(n<j\le2n)\)个点的点权为\(b_i\),对于每个\(i,j(1\lei\len<j\le2n)\),在\(i,j\)间连一条边,边权为\(|a_i-b_j|\)。定义一条路径的权值为经过的边的边权之和,求权值最大的哈密顿回路。\(n\le10^5\)......
  • 电脑提示“vcomp140.dll丢失“是什么原因?“找不到vcomp140.dll文件“要怎么解决?教你几
    电脑提示vcomp140.dll丢失:原因与解决方案作为一名在软件开发领域有着丰富经验的从业者,我深知电脑游戏运行时可能出现的各种问题,尤其是文件丢失、文件损坏和系统报错等情况。今天,我将为大家详细解析电脑提示vcomp140.dll丢失的原因,并提供一系列有效的解决方案,同时分享一些预防......
  • 洛谷P1039 [NOIP2003 提高组] 侦探推理
    ProblemSolve较为快速且好想的暴力方法是枚举m个人中选n个的组合方案,然后对证词进行检验,时间复杂度\(O(\frac{m!}{n!^2}p)\),仔细算算竟然能够在2e8左右通过但实际上这道题在当年肯定是给不了你2e8/sec的算力的,这道题目能够评蓝我觉得上面方法肯定是不配的结合€€£在18年及......
  • [luoguP11361/NOIP2024] 编辑字符串
    题意给出两个0/1字符串,每个字符串有一些位置被标记,无法交换。求通过任意多次的交换相邻元素操作能够使两个字符串最多多少位置相同。sol一道贪心题。显然交换相邻的操作可以使该字符串可以交换的一段任意排列。由于不同位置的贡献最大只为\(1\),因此在任何位置贡献都没有区......
  • CS61B srping 2018 examprep01(?02) https://sp18.datastructur.es/
    1.写出第21、24行的运行结果。(画出box-pointer指示图会对答题很有帮助)1publicclassShock{2publicstaticintbang;3publicstaticShockbaby;4publicShock(){5this.bang=100;6}7publicShock(intnum){8this.bang=num;9baby=starter();10this......
  • 题解:P11217 【MX-S4-T1】「yyOI R2」youyou 的垃圾桶
    链接https://www.luogu.com.cn/problem/P11217分析先不考虑维护垃圾桶的攻击力,假设我们已经知道了所有垃圾桶的攻击力。翻倍操作可以用左移(<<)实现。首先先计算出所有垃圾桶的伤害值,然后看看能抗几个整轮。然后考虑不能抗的情况。由于所有垃圾桶的攻击力都为正数,所以可以二......
  • COMP1001J Playing Grid
    100 989796959493929181828384858687  9080  7877 7574737体7161 58545765 67686970605956955 5352  5141......
  • 力扣刷题TOP101:10.BM12 单链表的排序
    目录:目的思路复杂度记忆秘诀python代码目的{1,3,2,4,5}排序变成{1,2,3,4,5}思路这个任务是将无序单链表变成有序表。推荐使用归并算法。可以理解为汉武帝的推恩令政策(分治思想)。将大块封地分成小块封地(分割链表),对小封地进行整顿,确保符合中央标准(分到最小),将整治......
  • P1746 离开中山路 JAVA题解 (广搜和双向广搜优化)
    题目背景《爱与愁的故事第三弹·shopping》最终章。题目描述爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 x1,y1x1​,y1​ 处,车站在 x2,y2x2​,y2​ 处。现在给出一个 n×n(n≤1000)n×n(n≤1000) 的地图,00 表示马路,11 表示店铺(不能从店铺穿过),爱与愁......
  • 欧姆龙CP1H-X40DT-D 中小学生买卡牌乱象
    电机:西门子电机系统涵盖整个同步和异步技术系列从标准电机系统,用于运动控制应用的伺服电机(包括直线电机和力矩电机),到防爆电机,再到高压电机、直流电机和客制化电机系统。西门子其它驱动技术:西门子提供的驱动技术系列产品在全球可谓无与伦比,除电机产品系列外,包括减速电机、减速......