openssh离线一键升级脚本分享(含安装包)

查看当前的版本

[root@myoracle ~]#ssh -V

在这里插入图片描述

相关安装包下载地址

openssh下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssl下载地址:https://www.openssl.org/source/zlib下载地址:http://www.zlib.net/

今天演示从7.4升级到9.9,其他的大家可以自行替换安装包和脚本中的名称即可。

一、脚本内容:

#!/bin/bash
# OpenSSH 离线升级一键脚本(v9.9p1)# 检查执行权限
if [[ "$(whoami)" != "root" ]]; thenecho -e "\033[31m错误:必须使用 root 用户执行此脚本!\033[0m" >&2exit 1
fi# 环境检查
check_environment() {echo -e "\n\033[34m[1/7] 正在检查系统环境...\033[0m"if ! grep -q "CentOS Linux 7.9" /etc/redhat-release; thenecho -e "\033[31m错误:仅支持 CentOS 7 操作系统!\033[0m"# exit 1fiif [ "$(uname -m)" != "x86_64" ]; thenecho -e "\033[31m错误:仅支持 64 位系统!\033[0m"exit 1fiecho -e "\033[32m环境检查通过\033[0m"
}# 安装依赖包
install_dependencies() {echo -e "\n\033[34m[3/7] 安装基础依赖...\033[0m"cd /opttar -xvf yilai.tar.gzcd yilairpm -ivh *.rpm --nodeps --forceecho -e "\033[32m依赖包安装完成\033[0m"
}# 编译安装 zlib
build_zlib() {echo -e "\n\033[34m[4/7] 编译安装 zlib...\033[0m"cd /opttar -xvf zlib-1.3.1.tar.gzcd zlib-1.3.1./configure --prefix=/usr/local/zlibmake && make installecho '/usr/local/zlib/lib' >> /etc/ld.so.confldconfig -v
}# 编译安装 OpenSSL
build_openssl() {echo -e "\n\033[34m[5/7] 编译安装 OpenSSL...\033[0m"cd /opttar -xvf openssl-1.1.1o.tar.gzcd openssl-1.1.1o./config --prefix=/usr/local/ssl -d sharedmake && make installecho '/usr/local/ssl/lib' >> /etc/ld.so.confldconfig -v
}# 安装 OpenSSH
install_openssh() {echo -e "\n\033[34m[6/7] 升级 OpenSSH 到 v9.9p1...\033[0m"# 卸载旧版本rpm -e --nodeps openssh-server openssh openssh-clients 2>/dev/null# 编译安装cd /opttar -xvf openssh-9.9p1.tar.gzcd openssh-9.9p1./configure --prefix=/usr/local/openssh \--with-zlib=/usr/local/zlib \--with-ssl-dir=/usr/local/sslmake && make install# 配置文件echo 'PermitRootLogin yes' >> /usr/local/openssh/etc/sshd_configecho 'PubkeyAuthentication yes' >> /usr/local/openssh/etc/sshd_configecho 'PasswordAuthentication yes' >> /usr/local/openssh/etc/sshd_configcp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_configecho 'HostKeyAlgorithms ssh-rsa,ssh-dss ' >> /etc/ssh/sshd_config# 替换系统命令(修复关键点)if [ -f /usr/sbin/sshd ]; thenmv /usr/sbin/sshd /usr/sbin/sshd.bakficp -f /usr/local/openssh/sbin/sshd /usr/sbin/sshd  # 使用新编译的二进制文件# 修复权限chmod 755 /usr/sbin/sshdcp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen# 复制 ssh 命令cp /usr/local/openssh/bin/ssh /usr/bin/sshchmod 755 /usr/bin/ssh# 启动脚本cp -p contrib/redhat/sshd.init /etc/init.d/sshdchmod +x /etc/init.d/sshdchkconfig --add sshdchkconfig sshd on
}# 最终验证
final_check() {echo -e "\n\033[34m[7/7] 执行最终检查...\033[0m"systemctl daemon-reloadsystemctl restart sshdssh -V 2>&1 | grep -q "OpenSSH_9.9p1"if [ $? -eq 0 ]; thenecho -e "\033[32m升级成功!当前SSH版本:$(ssh -V 2>&1)\033[0m"echo -e "\033[33m警告:请通过新SSH端口连接确认无误后,再关闭Telnet服务!\033[0m"elseecho -e "\033[31m错误:升级失败,请检查日志!\033[0m"exit 1fi
}# 主执行流程
main() {check_environmentinstall_dependenciesbuild_zlibbuild_opensslinstall_opensshfinal_check
}# 执行主函数
main

二、使用说明

文件准备
将以下文件放在 /opt 目录:

/opt/
├── yilai.tar.gz # 包含所有依赖的RPM包
├── openssh-9.9p1.tar.gz
├── openssl-1.1.1o.tar.gz
├── zlib-1.3.1.tar.gz

将以上脚本编写为upgrade_openssh.sh

赋予权限执行即可。

[root@myoracle ~]#chmod +x upgrade_openssh.sh
[root@myoracle ~]#./upgrade_openssh.sh

验证升级

[root@myoracle ~]#ssh -V  # 应显示 "OpenSSH_9.9p1"
[root@myoracle ~]#systemctl status sshd

在这里插入图片描述

重启验证

[root@myoracle ~]#reboot

在这里插入图片描述

三、离线安装包

通过网盘分享的文件:openssh
链接: https://pan.baidu.com/s/1_Y2X293ZBDf3DssrO_oUTw 
提取码: cr33

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac M1管理多个Node.js版本

目录 1. 使用 nvm (Node Version Manager) 1.1.安装 nvm 1.2.安装Node.js版本 1.3.查看已安装的node版本列表 1.4.使用特定版本的Node.js 1.5.查看当前使用的版本 2. 使用 fnm (Fast Node Manager) 2.1.安装 fnm 2.2.安装Node.js版本 2.3.查看已安装的版本 2.4.使用…

Unity中国战略调整简讯:Unity6下架 团结引擎接棒

Unity中国战略调整简讯:Unity6下架 团结引擎接棒 免费版 2025年4月9日 —— Unity中国宣布自即日起,中国大陆及港澳地区停止提供Unity 6及后续版本下载与服务,相关功能由国产引擎“团结引擎”承接。国际版2022 LTS及更早版本仍由Unity中国维护…

TestNG 单元测试详解

1、测试环境 jdk1.8.0 121 myeclipse-10.0-offline-installer-windows.exe TestNG 插件 org.testng.eclipse 6.8.6.20130607 0745 2、介绍 套件(suite):由一个 XML 文件表示,通过<suite>标签定义,包含一个或更多测试(test)。测试(test):由<test>定义&#xf…

C复习(主要复习)

指针和数组 指针数组是一个数组&#xff0c;数组的每个元素都是指针。它适用于需要存储多个指针的场景&#xff0c;如字符串数组。数组指针是一个指针&#xff0c;指向一个数组。它适用于需要传递整个数组给函数或处理多维数组的场景。 函数指针&#xff1a;函数指针的定义需要…

探索大语言模型(LLM):定义、发展、构建与应用

文章目录 引言大规模语言模型的基本概念大规模语言模型的发展历程1. 基础模型阶段&#xff08;2018年至2021年&#xff09;2. 能力探索阶段&#xff08;2019年至2022年&#xff09;3. 突破发展阶段&#xff08;以2022年11月ChatGPT的发布为起点&#xff09; 大规模语言模型的构…

5. k8s 之 pod原理与使用

Kubernetes Pod 原理详解 1. Pod 的部署方式 Pod 是 Kubernetes 的最小调度单元&#xff0c;其部署方式分为 声明式&#xff08;YAML&#xff09; 和 命令式&#xff08;kubectl&#xff09; 两种&#xff1a; (1) 声明式部署&#xff08;推荐&#xff09; 通过 YAML 文件定…

使用PyTorch实现目标检测边界框转换与可视化

一、引言 在目标检测任务中&#xff0c;边界框&#xff08;Bounding Box&#xff09;的坐标表示与转换是核心基础操作。本文将演示如何&#xff1a; 实现边界框的两种表示形式&#xff08;角点坐标 vs 中心坐标&#xff09;之间的转换 使用Matplotlib在图像上可视化边界框 验…

电影推荐及数据分析可视化系统(Python+Echarts+Mysql+Flask框架)

提升自己&#xff0c;掌握数据分析的能力&#xff0c;最快的方式就是实践&#xff01; 下面是对本项目的一些功能展示、介绍以及部分核心代码的展示,附项目系统展示的视频,制作不易如需完整代码后台私信我有偿获取! 一 、系统分析及功能介绍 1.系统分析 系统采用Python作为开发…

Android Jetpack Compose 高级开发核心技术

Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则&#xff1a;将状态提升到共享的最近共同父组件derivedStateOf&#xff1a;当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…

Java堆结构深度解析:原理、实现与应用全指南

一、堆的核心概念体系 1. 堆的定义与性质 graph TBROOT((最大堆)) --> A[父节点 ≥ 子节点]ROOT --> B[完全二叉树结构]ROOT --> C[数组存储]ROOT --> D[快速获取极值] 2. 堆类型对比 类型特性典型应用场景最大堆父节点值 ≥ 子节点值获取前K大元素最小堆父节点…

SpringMVC学习(请求与响应。常见参数类型接收与响应。@RequestParam、@RequestBody的使用)(详细示例)

目录 一、请求与响应。(RequestMapping) &#xff08;1&#xff09;使用注解RequestMapping对业务模块区分。 StudentController。 TeacherController。 &#xff08;2&#xff09;Apifox请求与响应。 "/student/login"。 "/teacher/login"。 二、常见参数…

回溯算法+对称剪枝——从八皇后问题到数独问题(二)

引入&#xff1a; 本节我们进一步完善八皇后问题&#xff0c;学习剪枝、八皇后残局问题 进一步领会逻辑编程的概念&#xff0c;深入体会回溯算法&#xff0c;回顾上一节提到的启发搜索策略。 回顾&#xff1a; 八皇后问题&#xff1a;我们需要在一个空棋盘上放置 n 个皇后&a…

【玩泰山派】MISC(杂项)- 使用vscode远程连接泰山派进行开发

文章目录 前言流程1、安装、启动sshd2、配置一下允许root登录3、vscode中配置1、安装remote插件2、登录 **注意** 前言 有时候要在开发板中写一写代码&#xff0c;直接在终端中使用vim这种工具有时候也不是很方便。这里准备使用vscode去通过ssh远程连接泰山派去操作&#xff0…

【VsCode】设置文件自动保存

目录 一、前言 二、操作步骤 一、前言 VSCode中开启自动保存功能可以通过访问设置、修改settings.json文件、使用自动保存延迟功能来实现。这些方法能有效提升编程效率、避免数据丢失、实时同步更改。 二、操作步骤 在 Visual Studio Code (VS Code) 中设置自动保存功能非…

Adobe After Effects的插件--------Optical Flares之Options概述

Optical Flares插件的Options是对整个效果的组装和设置。点击该按钮会弹出一个组装室弹窗。 Options组装室就是对每个【镜头对象】进行加工处理,再将其组装在一起,拼凑成完整的光效。 接下来是我对组装室的探索: 面板 面板中有预览、堆栈、编辑和浏览按钮,其作用是调节窗…

如何用 esProc 补充数据库 SQL 的缺失能力

某些数据库 SQL 缺失必要的能力&#xff0c;通常要编写大段的代码&#xff0c;才能间接实现类似的功能&#xff0c;有些情况甚至要改用存储过程&#xff0c;连结构都变了。常见的比如&#xff1a;生成时间序列、保持分组子集、动态行列转换、自然序号、相对位置、按序列和集合生…

迷你世界脚本脚本常见问题

脚本常见问题 彼得兔 更新时间: 2024-05-22 17:54:44 在查阅开发者学院中的脚本API时&#xff0c;若有任何问题或建议&#xff0c;欢迎通过问卷进行反馈&#xff01;【点我填写问卷】 1.Block中的data在什么地方使用 data使用有具体需求,此处不建议开发者使用。开发者尽可能使…

四、Appium Inspector

一、介绍 Appium Inspector 是一个用于移动应用自动化测试的图形化工具&#xff0c;主要用于检查和交互应用的 UI 元素&#xff0c;帮助生成和调试自动化测试脚本。类似于浏览器的F12(开发者工具),Appium Inspector 的主要作用包括&#xff1a;‌ 1.‌检查 UI 元素‌ …

android11通过白名单卸载安装应用

目录 1.源码路径: 2.准备文件package.conf: 3.安装方法installPackagesLI 4.卸载方法deletePackageX 1.源码路径: frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java public static final String WHITELIST_PATH="/data/misc/pa…

qt mapFrom返回的QPoint和event->pos()区别和globalPos区别

mousePressEvent 和 eventFilter 里 event.pos 不一样&#xff0c;一定要注意 eventFilter里event.pos 直接返回相对于label左上角的坐标&#xff0c;就不要再mapFrom mousePressEvent 里event.pos 返回是相对于窗口左上角的坐标&#xff0c;需要用mapFrom返回label左上角的…