Linux服务器升级openssh9.8最新版全过程,及遇到问题处理

前言:由于2024年7月1日,openssh发布了最新版9.8,所以服务器需要升级一下,特此做个详细记录:

由于下载最新版openssh9.8,需要将openssl也一并进行升级

一、下载openssh最新版本与openssl对应版本:

openssh最新版本下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable//

openssl对应版本下载地址(这下载OpenSSL 1.1.1v就可以):

Release OpenSSL 1.1.1v · openssl/openssl · GitHub

下载之后,请上传到需要升级的服务器的路径下

二、openssl安装:

2-1、安装前检查:

# 查看CentOS系统版本信息
cat /etc/redhat-release
# 查看openssl版本信息
openssl version
# 查看openssh的版本信息
ssh -V

2-2、安装依赖

# 安装相关的依赖项,如有遗漏再次安装
yum -y install gcc pam-devel zlib-devel openssl-devel net-tools

2-3、安装下载的openssl

由于openssh9.8p1要求openssl版本大于等于1.1.1,因此需要升级安装openssl。

①、解压openssl-1.1.1v.tar.gz
# 将openssl-1.1.1v解压到/usr/local目录下
Tar zxvf /home/test/openssl-1.1.1v.tar.gz –C /usr/local/
# 查看解压后目标目录情况
ll /usr/local/ | grep openssl
# 进入openssl-1.1.1v目录下
cd /usr/local/openssl-1.1.1v/
②、openssl准备及安装
# 创建安装目录
mkdir /opt/openssl
# 安装前查看openssl详细版本信息
openssl version

#编译
# 配置编译和安装过程,"--prefix=" 选项配置安装目录
./config --prefix=/opt/openssl
# 构建程序以及所需的指令和依赖关系
make
# 安装编译好的openssl-1.1.1w
make install

# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功
③、更新lib文件
# 检查openssl-1.1.1v所需要的函数库
ldd /opt/openssl/bin/openssl
# 添加openssl-1.1.1v的库文件路径到ld.so.conf
echo "/opt/openssl/lib" >> /etc/ld.so.conf
# 更新系统函数库库 
ldconfig --verbose
# 绝对路径查看openssl版本
ldd /opt/openssl/bin/openssl
④、更新bin文件
# 查看旧版本的openssl命令路径
which openssl
# 重命名为openssl.old
mv /bin/openssl /bin/openssl.old   #重命名openssl文件
# 使用软连接的方式更新openssl命令
ln -s /opt/openssl/bin/openssl /bin/openssl
# openssl命令查看版本呢
openssl version

三、openssh9.8安装

3-1、解压下载的安装包,卸载原来包

tar zxvf openssh9.7p1.tar.gz

# 卸载openssh的rpm包
for i in $(rpm -qa | grep openssh);do rpm -e $i --nodeps;done

3-2、进入解压文件后,开始编译

# 配置编译和安装过程,"--prefix=" 配置安装目录,"--sysconfdir=" 配置文件路径,"--with-ssl-dir=" openssl的安装路径

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/opt/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening

# 构建程序以及所需的指令和依赖关系
make
# 安装编译好的openssh9.8p1
make install

# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功

3-3、复制并修改启动sshd.init脚本

# 从源码目录下复制sshd.init到/etc/init.d/
cp contrib/redhat/sshd.init /etc/init.d/

## 查看并修改SSHD的新路径,将新的openssh安装路径更新
cat /etc/init.d/sshd.init | grep SSHD
sed -i "s/SSHD=\/usr\/sbin\/sshd/SSHD=\/usr\/local\/openssh\/sbin\/sshd/g" /etc/init.d/sshd.init
cat /etc/init.d/sshd.init | grep SSHD

## 查看并修改ssh-keygen的新路径,将新的ssh-keygen安装路径更新
cat -n /etc/init.d/sshd.init | grep ssh-keygen
sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd.init
cat -n /etc/init.d/sshd.init | grep ssh-keygen

3-4、修改配置文件

# 开启允许X11转发
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config 
# 开启允许密码验证
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config 

3-5、启动openssh,并设置开机启动

# 复制ssh的相关命令
cp -arp /usr/local/openssh/bin/* /usr/bin/
# 启动sshd服务
/etc/init.d/sshd.init
# 查看版本
ssh –V
# 添加开机启动
chmod +x /etc/rc.d/rc.local
echo “/etc/init.d/sshd.init start” >> /etc/rc.d/rc.local  

如果启动不成功,通过命令查看,是什么原因导致的

#通过 systemctl status sshd查看sshd是否正常启动
systemctl status sshd
如果执行上边命令也不可以,那么需要执行:
yum install openssh-server

#执行后,如果显示activing或者dead没有正常启动,那么需要执行命令,查看具体异常原因:

tail -f /var/log/messages

#根据日志情况,结果看到原因是22端口被占用导致无法正常启动(图当时没截)

所以需要将22端口kill掉,特别注意,执行下边这个命令后,你连接的这台服务器会马上连接不上了!!!,前边都执行没有问题,才可以执行,执行过几分钟后,再来链接发现正常链接上了:

fuser -k 22/tcp     #执行时需特别注意

再次连接,发现可以正常链接上了,并通过命令查看是否为最新版本:

结束!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2-24 基于图像处理的细胞计数方法

基于图像处理的细胞计数方法。经过初次二值化、中值滤波后二值化、优化后二值化图像、填充背景色的二进制图像、开运算后的图像一系列运算后,进行标签设置,最终得到细胞总数。程序已调通,可直接运行。 2-24 细胞计数方法 中值滤波后二值化 - …

Pandas函数详解:案例解析(第25天)

系列文章目录 Pandas函数详解排序函数聚合函数缺失值处理日期函数 文章目录 系列文章目录前言1 索引和列名操作1.1 查看索引和列名1.2 修改索引和列名 2 常用计算函数2.1 排序函数2.2 聚合函数2.3 练习 3 缺失值处理3.1 缺失值概念3.2 加载包含缺失值数据3.3 查看缺失值3.4 缺失…

小型语言模型SLM:趋势和用例

前言 近年来,GPT 和 BERT 等大型语言模型 (LLM) 不断发展,参数数量从数亿飙升至 GPT-4 等后继者的一万亿以上。然而,不断增长的参数规模引出了一个问题:对于企业应用来说,参数规模越大就一定越好吗? 答案…

ode45的例程|MATLAB例程|四阶龙格库塔定步长节微分方程

ode45自己编的程序和测试代码 模型 模拟一个卫星绕大行星飞行的轨迹计算。 结果 轨迹图如下: 源代码 以下代码复制到MATLAB上即可运行,并得到上面的图像: % ode45自己编的程序和测试代码 % Evand©2024 % 2024-7-2/Ver1 clear;clc;close all; rng(0); % 参数设定…

微信小程序订单发货管理接入

订单发货管理接入指引:https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetannouncement&key11671435333v04b2&version1&langzh_CN&platform2https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetann…

上海小程序开发需要进行定制开发吗?

随着互联网技术与移动设备的不断成熟,小程序也已普及到人们日常生活的方方面面。随着企业与互联网联结的愈发深入,小程序的开发可以为企业带来更高效的经营模式,降本增效。那么,上海小程序作为无需安装且开发门槛较低的应用&#…

VulnHub靶场之DarkHole_1

1 信息收集 1.1 主机发现 arp-scan -l 主机IP地址为:192.168.1.17 1.2 端口和服务扫描 nmap -sS -sV -A -T5 -p- 192.168.1.17 开放22,80端口 1.3 目录扫描 dirsearch -u 192.168.1.17 2 渗透 2.1 访问端口 2.2 注册账号 暴力破解不现实&#…

网口串口(Serialport)服务器

文章所用工具http://t.csdnimg.cn/2gIR8http://t.csdnimg.cn/2gIR8 搭建服务器界面 操作配置文件保存方式类 public string FileName { get; set; }public IniHelper(string name) {this.FileName name; //在构造函数中给路径赋值} 1 先导入c语言进行读取操作ini文件的方法 …

理解Netty的核心概念

一、理解Netty Netty是一个用于开发高性能网络应用的框架。为了更容易理解它,下面一些描述,不一定准确,但一定容易理解。 从Netty的Channel开始,把Netty所有的核心概念都串起来。 Channel 简单理解为一个连接。 有一个特殊的C…

python使用pywebview集成vue3和element-plus开发桌面系统框架

随着web技术越来越成熟,就连QQ的windows客户端都用web技术来开发,所以在未来,web技术来开发windows桌面软件也会越来越多,所以在此发展驱动之下,将最近流程的python与web技术相结合,使用vue3和element-plus…

使用requests爬取拉勾网python职位数据

爬虫目的 本文是想通过爬取拉勾网Python相关岗位数据,简单梳理Requests和xpath的使用方法。 代码部分并没有做封装,数据请求也比较简单,所以该项目只是为了熟悉requests爬虫的基本原理,无法用于稳定的爬虫项目。 爬虫工具 这次…

Linux中为什么etc是存放配置文件

在计算机系统中,/etc 是一个目录的名称,通常位于Unix和类Unix操作系统中,如Linux。这个目录用于存放系统配置文件。/etc 的命名来源于早期Unix系统中的 "etcetera"(拉丁语 "et cetera" 的缩写,意为…

电子工程与网络技术解析

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 正文 1、MUX&PD是什么意思 2、Hub 和HUB有什么区别 3、Redriver什么意思 4、Switch是什么意思 5、USB 2.0 ETHERNET2什么意思 6、…

[译]全栈Redux实战

本文乱译自一篇英文博文(Full-Stack Redux Tutorial),本人英语能力不足,技术能力有限,如有错误,多多包涵。 #关于ReduxReactImmutable的测试先行开发综合指南 Redux是最近发生在js界令人兴奋的事儿。它把…

Vue+Xterm.js+WebSocket+JSch实现Web Shell终端

一、需求 在系统中使用Web Shell连接集群的登录节点 二、实现 前端使用Vue&#xff0c;WebSocket实现前后端通信&#xff0c;后端使用JSch ssh通讯包。 1. 前端核心代码 <template><div class"shell-container"><div id"shell"/>&l…

Unity动画系统(2)

6.1 动画系统基础2-3_哔哩哔哩_bilibili p316 模型添加Animator组件 动画控制器 AnimatorController AnimatorController 可以通过代码控制动画速度 建立动画间的联系 bool值的设定 trigger p318 trigger点击的时候触发&#xff0c;如喊叫&#xff0c;开枪及换子弹等&#x…

css flex 子元素溢出时,父元素被撑开解决方案

当父元素使用flex: 1;自适应填满时&#xff0c;子元素内容溢出&#xff0c;父元素内容撑大&#xff0c;导致页面显示问题&#xff0c;或设置了overflow 为scroll 的元素没出现滚动条等问题 解决方案&#xff1a; 1.如果是横向排列&#xff0c;flex: 1;的元素加上width: 0; 此…

【PB案例学习笔记】-28制作一个右键菜单

写在前面 这是PB案例学习笔记系列文章的第28篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

流量控制组件选型之 Sentinel vs Hystrix

Sentinel: Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件&#xff0c;于2018年7月正式开源。Sentinel 主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助用户提升服务的稳定性。大家可能会问&#xff1a;Sen…