【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)

news2024/11/25 4:52:48

👨‍🎓博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 文章声明
  • 前述
  • 安装一些必要的命令(需要用到的)
  • Centos 服务器升级OpenSSH到9.3p2
    • 1、安装依赖
    • 2、编译安装openssl
    • 3、查看、备份并卸载原有OpenSSH
    • 4、下载OpenSSH二进制包
    • 5、解压并编译安装OpenSSH
    • 6、授权
    • 7、复制配置文件
    • 8、修改配置允许root用户远程登录
    • 9、启用sshd,生成服务配置文件,并重启服务
    • 10、验证升级是否成功
  • 可能遇到的问题及解决方式
    • 问题一:
    • 问题二:
    • 问题三:
    • 问题四:
  • 参考文献
  • 相关文章

文章声明

文章声明:此文基于实操撰写 生产环境:
ssh -V查看版本是:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
问题关键字:OpenSSH 升级, OpenSSH 更新, OpenSSH 漏洞修复
漏洞信息:OpenSSH代理转发远程代码执行漏洞(CVE-2023-38408)

在这里插入图片描述

前述

OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。 OpenSSH 8.9版本至9.3之前版本存在安全漏洞,该漏洞源于将智能卡密钥添加到ssh-agent,会导致忽略每次转发的目标约束。
注:此操作步骤同样适用于Red Hat系所有 9.x 服务器系统。

注意事项:

在升级之前,建议打开多个SSH终端连接,并安装telnet服务器,确保在SSH服务器升级异常时,可以通过telnet服务器远程连接,进行紧急问题修复处理。
因为最开始需要直接卸载openssh,卸载完之后就连不上了,如有问题不好解决,所以建议多开几个SSH终端连接。
在升级前一定要备份原有的配置文件,以防出现意外情况。

安装一些必要的命令(需要用到的)

安装一些必要的命令(需要用到的)

yum install wget gcc openssl-devel pam-devel rpm-build zlib-devel -y

如果没有外网,可以选择在有网络的服务器上下载rpm安装包,yum离线下载安装包可参考:Centos7 yum如何下载离线安装包?(详解)

命令解析:

  • 1.1 OpenSSL:OpenSSH 使用了 OpenSSL 的加密库。因此,在更新 OpenSSH 之前,需要先更新 OpenSSL 的版本。
  • 1.2 PAM:OpenSSH 使用了Pluggable Authentication Modules (PAM),因此需要安装 PAM 相关的库文件。
  • 1.3 Zlib:OpenSSH 使用了 Zlib 库进行数据压缩。因此,需要安装 Zlib 的库文件。
  • 1.4 GCC 和 G++:OpenSSH 的编译需要 GCC 和 G++ 编译器。

Centos 服务器升级OpenSSH到9.3p2

1、安装依赖

安装一些必要的命令(需要用到的)

2、编译安装openssl

2.1 官网下载安装包:openssl官网

在这里插入图片描述
在这里插入图片描述

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1t.tar.gz

或者是使用我提供的离线包:openssh7.4p1 升级到 openssh9.3p2 所需的离线包

网盘下载:
链接:https://pan.baidu.com/s/1W426VDGwchE9ndKGV-eyxw?pwd=f2um
提取码:f2um

2.2 解压并放到/usr/local/目录

tar xf openssl-1.1.1t.tar.gz -C /usr/local

2.3 编译安装openssl

# 进入openssl目录
cd /usr/local/openssl-1.1.1t

# 编译安装openssl
./config shared --prefix=/usr/local/openssl
make -j 4
make install

2.4 为openssl做软连接

echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
# 加载配置文件
ldconfig
# 备份以前的openssl
mv /usr/bin/openssl /usr/bin/openssl.old
# 软连接,如果提示软连接已存在,记得备份软连接,然后在执行下面再次软连接,要不然会出问题,会导致root目录看不了,磁盘看不了,sftp连接不上;
ln -sv /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

软连接,如果提示软连接已存在,记得备份软连接,然后在执行上面再次进行软连接,要不然会出问题,会导致root目录看不了,磁盘看不了,sftp连接不上,等等一系列问题;

2.5 查看openssl版本

openssl version -a

在这里插入图片描述

3、查看、备份并卸载原有OpenSSH

确保终端一直连接 断开远程连接就不能用了

# 查看当前安装包
[root@localhost ~]# rpm -qa | grep openssh
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64

# 查看当前OpenSSH版本(Centos7 默认使用OpenSSH_7.4p1)
[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

# 备份现有的SSH
[root@localhost ~]# mv /etc/ssh/ /etc/ssh.bak
[root@localhost ~]# mv /usr/bin/ssh /usr/bin/ssh.bak
[root@localhost ~]# mv /usr/sbin/sshd /usr/sbin/sshd.bak

# 如果您是第一次升级,备份/etc/init.d/sshd时会不存在,不影响后续操作
[root@localhost ~]# mv /etc/init.d/sshd /etc/init.d/sshd.bak
mv: 无法获取'/etc/init.d/sshd' 的文件状态(stat): No such file or directory

# 卸载现有OpenSSH
rpm -e --nodeps $(rpm -qa |grep openssh)

在这里插入图片描述

确保已经卸载成功(没有返回则卸载成功)

rpm -qa | grep openssh

在这里插入图片描述

4、下载OpenSSH二进制包

openssh官网:下载官网

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz

在这里插入图片描述

或者是使用我提供的离线包:openssh7.4p1 升级到 openssh9.3p2 所需的离线包

网盘下载:
链接:https://pan.baidu.com/s/1W426VDGwchE9ndKGV-eyxw?pwd=f2um
提取码:f2um

5、解压并编译安装OpenSSH

# 将下载的openssh安装包移动到/usr/local下
[root@localhost ~]# mv openssh-9.3p2.tar.gz /usr/local/

# 进入/usr/local/目录解压openssh9.3
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar xf openssh-9.3p2.tar.gz

# 进入openssh目录
[root@localhost local]# cd openssh-9.3p2

# 编译安装
[root@localhost openssh-9.3p2]# CCFLAGS="-I/usr/local/include" \
LDFLAGS="-L/usr/local/lib64" \
./configure \
--sysconfdir=/etc/ssh \
--with-zlib \
--with-ssl-dir=/usr/local/openssl

[root@localhost openssh-9.3p2]# make -j 4
[root@localhost openssh-9.3p2]# make install

6、授权

[root@localhost openssh-9.3p2]# chmod 600 /etc/ssh/*

7、复制配置文件

[root@localhost openssh-9.3p2]# cp -rf /usr/local/sbin/sshd /usr/sbin/sshd
[root@localhost openssh-9.3p2]# cp -rf /usr/local/bin/ssh /usr/bin/ssh
[root@localhost openssh-9.3p2]# cp -rf /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
[root@localhost openssh-9.3p2]# cp -ar /usr/local/openssh-9.3p2/contrib/redhat/sshd.init /etc/init.d/sshd
[root@localhost openssh-9.3p2]# cp -ar /usr/local/openssh-9.3p2/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

8、修改配置允许root用户远程登录

# 修改配置允许root用户远程登录(允许使用密码登录,允许root远程登录,开启端口,赋予/etc/init.d/sshd权限)
cat >>/etc/ssh/sshd_config<<EOF
PermitRootLogin yes
X11Forwarding yes
PasswordAuthentication yes
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
EOF

[root@localhost openssh-9.3p2]# sed -i "s/^#Port/Port/g" /etc/ssh/sshd_config
[root@localhost openssh-9.3p2]# chmod 755 /etc/init.d/sshd

9、启用sshd,生成服务配置文件,并重启服务

# 启用sshd,生成服务配置文件
[root@localhost openssh-9.3p2]# systemctl enable sshd
sshd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig sshd on

# 重启服务
[root@localhost openssh-9.3p2]# systemctl restart sshd
# 查看服务状态
[root@localhost openssh-9.3p2]# systemctl status sshd

在这里插入图片描述

10、验证升级是否成功

[root@localhost ~]# ssh -V
OpenSSH_9.3p2, OpenSSL 1.1.1t  7 Feb 2023

在这里插入图片描述

可能遇到的问题及解决方式

问题一:

编译如果有此报错,可能是你没安装gcc…需要的命令,返回最上面: 安装一些必要的命令(需要用到的),安装完再次编译就可以了。

在这里插入图片描述

问题二:

编译时报错信息:

checking for cc... cc
checking whether the C compiler works... no
configure: error: in `/usr/local/openssh-9.3p2':
configure: error: C compiler cannot create executables
See `config.log' for more details

gcc问题,如果gcc是5.4将gcc降级为4.8.5,我遇到的问题就是因为gcc的版本为5.4,将gcc版本降为4.8.5即可。

问题三:

编译时报错信息:

checking for openssl/opensslv.h... yes
checking OpenSSL header version... 009070e0 (OpenSSL 0.9.7n-dev xx XXX xxxx)
checking for OpenSSL_version... no
checking for OpenSSL_version_num... no
checking OpenSSL library version... configure: error: OpenSSL >= 1.0.1 required (have "009070e0 (OpenSSL 0.9.7n-dev xx XXX xxxx)")

这个报错是说版本要必须大于等于1.0.1,但是ssh -V我看的时候是1.0.2,可能还是因为版本太低了,我就升级了一个openssl版本为1.1.1,就可以了。安装openssl可参考:编译安装openssl

问题四:

升级OpenSSH后SFTP无法连接问题

  • 1.修改配置
vim  /etc/ssh/sshd_config
 
#override default of no subsystems
#Subsystem      sftp    /usr/local/openssh/libexec/sftp-server改成下面这句
Subsystem      sftp    internal-sftp
  • 2.重启sshd服务
systemctl restart sshd

再试一下就可以了。

参考文献

  • [1] 国家信息安全漏洞库:http://www.cnnvd.org.cn/
  • [2] 腾讯安全:https://s.tencent.com/research/bsafe/
  • [3] Centos7 yum如何下载离线安装包?(详解):https://liucy.blog.csdn.net/article/details/125780172?spm=1001.2014.3001.5502

相关文章

文章标题文章链接
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_8.7p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/130484944
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/131398113
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/132848440
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/132848789

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

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

相关文章

[Java·算法·困难]LeetCode124.二叉树中的最大路径和

每天一题&#xff0c;防止痴呆 题目示例分析思路1题解1 &#x1f449;️ 力扣原文 题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经…

第七章 查找 七、红黑树

一、为什么要发明红黑树 因为&#xff1a; 平衡二叉树AVL:插入/删除很容易破坏“平衡”特性&#xff0c;需要频繁调整树的形态。如:插入操作导致不平衡&#xff0c;则需要先计算平衡因子&#xff0c;找到最小不平衡子树&#xff08;时间开销大&#xff09;&#xff0c;再进行L…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

使用sqlmap的 ua注入

文章目录 1.使用sqlmap自带UA头的检测2.使用sqlmap随机提供的UA头3.使用自己写的UA头4.调整level检测 测试环境&#xff1a;bWAPP SQL Injection - Stored (User-Agent) 1.使用sqlmap自带UA头的检测 python sqlmap.py -u http://127.0.0.1:9004/sqli_17.php --cookie“BEEFHOO…

C语言 —— 函数

目录 1. 函数是什么 2. C语言中函数的分类 2.1 库函数 2.2 自定义函数 3. 函数的参数 3.1 实际参数(实参) 3.2 形式参数(形参) 4. 函数的调用 4.1 传值调用 4.2 传址调用 5. 函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1函数声明…

GEO生信数据挖掘(四)数据清洗(离群值处理、低表达基因、归一化、log2处理)

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 离群值处理 删除 低表达基因 函数归一化&#xff0c;矫正差异 数据标准化—log2处理 完整代码 上节围绕着探针ID和基因名称做了一些清洗工作&#xff0c;还做了重复值检查…

Elasticsearch基础篇(三):Elasticsearch7.x的集群部署

Elasticsearch的集群部署 1. Elasticsearch集群架构主节点数据节点客户端节点分片节点间通信集群状态 2. Elasticsearch集群部署2.1 系统配置修改2.1.1 修改文件句柄数和线程数2.1.2 修改虚拟内存2.1.3 关闭交换空间&#xff08;Swap&#xff09; 2.2 下载es数据库并上传到服务…

企业部署,springboot+vue+vue,Linux上部署mysql与redis,docker中部署nginx,jenkins。完整详细。

企业项目部署全流程笔记 前言 涉及&#xff1a;Linux服务器&#xff0c;docker&#xff0c;Jenkins&#xff0c;nginx&#xff0c;springoot&#xff0c;vue&#xff0c;mysql&#xff0c;redis&#xff0c;git&#xff0c; docker生成容器类型&#xff1a;MySql&#xff0c…

5G消息发展的前景与挑战

随着5G技术的快速发展和普及&#xff0c;5G消息正逐渐成为全球通信领域的新焦点。 随着5G技术的快速发展和普及&#xff0c;5G消息正逐渐成为全球通信领域的新焦点。 5G消息发展呈现规模化、产业化趋势 自2020年4月国内三大运营商联合发布5G消息白皮书以来&#xff0c;已经过…

Ubuntu20.04.1编译qt6.5.3版mysql驱动

下载qtbase6.5.3源码&#xff0c;将plugin中sqldrivers源码拷至于项目工程中&#xff0c;使用qtcreator打开文件 1、下载mysql开发库 sudo apt-get update sudo apt-get install build-essential libmysqlclient-dev 2、在msyql子目录中CMakeLists.txt第一行添加头文件、引…

面试必考精华版Leetcode236. 二叉树的最近公共祖先

题目&#xff1a; 代码(首刷看解析 10.1&#xff09;&#xff1a; class Solution { public:TreeNode* ansnullptr;bool FindSon(TreeNode* root,TreeNode* p,TreeNode* q){if(root nullptr) return false;bool lson FindSon(root->left,p,q);bool rson FindSon(root-&…

力扣 -- 712. 两个字符串的最小ASCII删除和

解题过程&#xff1a; 参考代码&#xff1a; class Solution { public:int minimumDeleteSum(string s1, string s2) {int ms1.size();int ns2.size();//求两个字符串的总ASCII和int sum0;for(const auto& e:s1){sume;}for(const auto& e:s2){sume;}//多开一行&#x…

数据结构与算法-(6)---栈的应用-(2)进制转换

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

基于STM32设计的智能化钻杆系统(华为云IOT)

一、项目引言 在现代石油、天然气等资源勘探和开采过程中,钻井是一项关键的工艺。为了提高钻井作业的准确性和效率,我们设计了一种基于STM32的智能化钻杆系统。该系统利用先进的控制和通信技术,实现了远程控制管子的转动和移动角度,并通过管子设备端的OLED显示屏显示接收到…

Docker从认识到实践再到底层原理(八)|Docker网络

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

WiFi网络分析工具Airtool for Mac

Airtool是一款Mac平台上的WiFi网络分析工具&#xff0c;它可以帮助用户监测、分析和管理无线网络。 以下是Airtool的一些主要功能和特点&#xff1a; 实时监测&#xff1a;Airtool可以实时监测当前Mac设备所连接的WiFi网络&#xff0c;包括网络速度、信号强度、连接状态等。信…

Linux CentOS7 vim重复行

在用vim编辑处理文件时&#xff0c;会有重复行。有的是情境需要&#xff0c;有的可能是误操作而形成。对于正常形成的重复行&#xff0c;我们不作讨论&#xff0c;我们仅讨论什么情况下会出现重复行&#xff0c;如何避免&#xff0c;如何处理。 在文件中的单行或多个连续空白行…

Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

每日一练-Q1-大数加法-20231001

目录 1.题目描述 2.输入描述 3.示例提示 4.问题分析 5.通过代码 1.题目描述 大数一直是一个c语言的一个难题。 现在我们需要你手动模拟出大数加法过程。 请你给出两个大整数加法结果。 2.输入描述 第一行输入整数n&#xff0c;第二行输入整数m。 (1<number<1e100)…

Leetcode 224. 基本计算器

文章目录 题目代码&#xff08;10.1 首刷看解析&#xff09; 题目 Leetcode 224. 基本计算器 代码&#xff08;10.1 首刷看解析&#xff09; class Solution { public:int calculate(string s) {stack<int> sk; // 存储正负号sk.push(1);int sign 1;int res 0;int i…