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

👨‍🎓博主简介

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


文章目录

  • 文章声明
  • 漏洞描述
  • 前述
  • 安装一些必要的命令(需要用到的)
  • Centos 服务器升级OpenSSH到9.6p1
    • 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-51385)

在这里插入图片描述

漏洞描述

OpenSSH命令注入漏洞(CVE-2023-51385)详细描述:

该漏洞与配置文件ssh_config有关,攻击者可以修改配置文件中的ProxyCommand、LocalCommand、Match exec相关命令,通过%h、%u或类似的扩展标记引用主机名或用户名,在建立SSH连接时,注入恶意shell字符进行命令注入攻击。

  • 影响范围:

OpenSSH < 9.6

前述

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如何下载离线安装包?(详解)

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

网盘下载:
链接: https://pan.baidu.com/s/1eLN1mIZc2yW2KEMa03HCLQ?pwd=open
提取码:open

命令解析:

  • 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.6p1

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.6p1 所需的离线包

网盘下载:
链接: https://pan.baidu.com/s/1eLN1mIZc2yW2KEMa03HCLQ?pwd=open
提取码:open


如果遇到以下问题,后面加上--no-check-certificate

在这里插入图片描述

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

在这里插入图片描述

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.6p1.tar.gz

在这里插入图片描述

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

网盘下载:
链接: https://pan.baidu.com/s/1eLN1mIZc2yW2KEMa03HCLQ?pwd=open
提取码:open

5、解压并编译安装OpenSSH

# 将下载的openssh安装包移动到/usr/local下
[root@localhost ~]# mv openssh-9.6p1.tar.gz /usr/local/# 进入/usr/local/目录解压openssh9.3
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar xf openssh-9.6p1.tar.gz# 进入openssh目录
[root@localhost local]# cd openssh-9.6p1# 编译安装
[root@localhost openssh-9.6p1]# 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.6p1]# make -j 4
[root@localhost openssh-9.6p1]# make install

6、授权

[root@localhost openssh-9.6p1]# chmod 600 /etc/ssh/*

7、复制配置文件

[root@localhost openssh-9.6p1]# cp -rf /usr/local/sbin/sshd /usr/sbin/sshd
[root@localhost openssh-9.6p1]# cp -rf /usr/local/bin/ssh /usr/bin/ssh
[root@localhost openssh-9.6p1]# cp -rf /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
[root@localhost openssh-9.6p1]# cp -ar /usr/local/openssh-9.6p1/contrib/redhat/sshd.init /etc/init.d/sshd
[root@localhost openssh-9.6p1]# cp -ar /usr/local/openssh-9.6p1/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.6p1]# sed -i "s/^#Port/Port/g" /etc/ssh/sshd_config
[root@localhost openssh-9.6p1]# chmod 755 /etc/init.d/sshd

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

# 启用sshd,生成服务配置文件
[root@localhost openssh-9.6p1]# systemctl enable sshd
sshd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig sshd on# 重启服务
[root@localhost openssh-9.6p1]# systemctl restart sshd
# 查看服务状态
[root@localhost openssh-9.6p1]# systemctl status sshd

在这里插入图片描述

10、验证升级是否成功

[root@localhost ~]# ssh -V
OpenSSH_9.6p1, 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.6p1':
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

相关专栏

专栏标题专栏链接
《OpenSSH 系列》https://blog.csdn.net/liu_chen_yang/category_12463139.html
《Linux从入门到精通》https://blog.csdn.net/liu_chen_yang/category_10887074.html
《Linux服务器安全》https://blog.csdn.net/liu_chen_yang/category_12390514.html

相关文章

文章标题文章链接
【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/133460612
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.4p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/133697104
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/136536352
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/133460539
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/134717718
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/136327961
【Linux】 OpenSSH_9.3p2 升级到 OpenSSH_9.4p1(亲测无问题,建议收藏)https://liucy.blog.csdn.net/article/details/133682882

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

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

相关文章

判断IQ水平-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第50讲。 判断IQ水平&#…

【投稿优惠-EI稳定检索】2024年设计、数字化技术与新闻传播国际学术会议(ICDDTJ 2024)

2024 International Conference on Design, Digital Technology and Journalism 网址&#xff1a;www.icddtj.com 邮箱: icddtjsub-conf.com&#xff08;备注于老师推荐享投稿优惠&#xff09; 投稿主题请注明:ICDDTJ 2024通讯作者姓名&#xff08;否则无法确认您的稿件&…

大厂Java笔试题之判断一个数是否自守数

题目&#xff1a;自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 87909376。 请求出n(包括n)以内的自守数的个数 数据范围&#xff1a; 1≤n≤10000 输入描述&#xff1a; int型整数 输出描述&…

Linux安装及管理程序

目录 一.Linux应用程序基础 1.应用程序与系统命令的关系 2.典型应用程序的目录结构 3.常见的Linux软件包封装类型 二.RPM 软件包管理工具 1.RPM 软件包管理器 Red-Hat Package Manger 2.RPM软件包 3.RPM命令 三.源代码编译安装 1. yum 软件包管理器&#xff1a; 配…

dremio作业概括

1. Summary 属性 描述 Status 表示一个或多个作业状态。作业和状态 Total Memory 提供有关查询操作的实际成本&#xff08;以内存为单位&#xff09;的统计信息。 CPU Used 提供有关查询操作的实际成本&#xff08;CPU 处理&#xff09;的统计信息。 Query Type 表示五…

Jmeter安装教程

介绍 : Jmeter主要是用来测接口的&#xff1b; 优缺点 : 下载 : 地址 : https://jmeter.apache.org/download_jmeter.cgi 这里提供网盘链接 : https://pan.baidu.com/s/1RbDIDhJcgE 验证码 : 968v 安装 解决中文乱码问题 : 在bin目录瞎找到jmeter.properties : 然…

【嵌入式】嵌入式系统常见文件系统大盘点

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

强大的系统监测工具 iStat Menus for mac最新中文激活版

iStat Menus for Mac是一款功能强大的系统监控工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助用户全面了解电脑的运行状态&#xff0c;提高电脑的性能和稳定性。 iStat Menus for mac最新中文激活版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动等各…

React状态管理比较原理

一、React状态管理库 按照23年下载使用顺序依次是&#xff1a; ReduxZustandMobXRecoilJotaiValtio 二、各状态管理库简要概述 Redux&#xff1a;Redux 是一个行业标准的状态管理库&#xff0c;它利用 flux 架构来创建不可变的数据存储。 优点 提供可预测的、一致的状态…

java学习——消息队列MQ

上一篇传送门&#xff1a;点我 目前只学习了RabbitMQ&#xff0c;后续学习了其他MQ后会继续补充。 MQ有了解过吗&#xff1f;说说什么是MQ&#xff1f; MQ是Message Queue的缩写&#xff0c;也就是消息队列的意思。它是一种应用程序对应用程序的通信方法&#xff0c;使得应用…

Java算法之时间复杂度和空间复杂度的概念和计算

1. 算法效率 如何去衡量一个算法的好坏&#xff1f; 通常我们从时间效率和空间效率两个方面去分析算法的好坏。时间效率即时间复杂度&#xff0c;空间效率被称为空间复杂度。时间复杂度主要是衡量一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间…

有道词典网页版接口分析与爬虫研究

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、目标站点 有道词典网页版&#xff1a;网易有道 二、目标接口 url&#xff1a;https://dict.youdao.com/jsonapi_s?doctypejson&…

Linux系统搭建FastDFS文件服务结合内网穿透实现公网访问本地文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++-基础

C语言介绍 C 是一种通用编程语言&#xff0c;具有高性能、灵活性和广泛的应用领域。它是在 1979 年由 Bjarne Stroustrup 开发的&#xff0c;最初被称为“C with Classes”&#xff0c;随后在 1983 年正式更名为 C。C 基于 C 语言&#xff0c;同时引入了面向对象编程&#xff0…

使用冒泡排序模拟实现qsort函数

目录 冒泡排序qsort函数的使用1.使用qsort函数排序整型数据2.使用qsort函数排序结构数据 冒泡排序模拟实现qsort函数今日题目1. 字符串旋转结果2.杨氏矩阵3.猜凶手4.杨辉三角 总结 冒泡排序 冒泡排序的核心思想是:两两相邻的元素进行比较 代码如下: //⽅法1 void bubble_so…

【Linux】线程的控制

目录 POSIX线程库 常用的POSIX线程库接口声明&#xff1a; 注意事项 创建一个进程 pthread_create函数 参数 返回值 使用示例 线程ID和进程地址空间布局 线程ID 进程地址空间布局 示例图 获取一个进程的线程ID 函数原型 返回值 使用示例 注意事项 线程终止 p…

设计模式系列:责任链模式

简介 责任链模式是一种行为型设计模式&#xff0c;它允许你将请求沿着处理者链进行发送。每个处理者都可以对请求进行处理&#xff0c;或者将其传递给链上的下一个处理者。责任链模式主要应用于面向对象编程中&#xff0c;特别是当系统中的对象需要根据其属性来决定如何处理请…

嘴尚绝美味健康:探索美食背后的健康密码

在快节奏的现代生活中&#xff0c;人们对美食的追求从未停止。然而&#xff0c;随着健康意识的提升&#xff0c;越来越多的人开始关注美食与健康的平衡。今天&#xff0c;我们就来一起探讨“嘴尚绝美味健康”这一话题&#xff0c;看看如何在享受美食的同时&#xff0c;保持身体…

JMeter入门教程 —— 事务!

简介&#xff1a; JMeter中事务的基本介绍 1.任务背景 JMeter中的事务是通过事务控制器实现的。&#xff0c;为了衡量服务器对某一个或一系列操作处理的响应时间&#xff0c;需要定义事务。下面我们详细介绍在JMeter中如何使用事务 2.任务目标 掌握基于JMeter性能测试脚本开…

speccpu2017安装与使用

国产化桌面下Speccpu2017安装与使用 1、 安装依赖库 安装speccpu2017前需要安装依赖包&#xff0c;通过终端命令对依赖包进行安装 sudo apt-get install gcc g gfortran &#xff08;以上是已经安装好的&#xff09; 注&#xff1a;若安装不上&#xff0c;需替换/etc/apt下的s…