《Linux运维总结:Centos7.6之OpenSSH9.0升级版本至9.3》

news2024/11/25 0:26:04

一、环境信息

说明:当前环境openssh版本为9.0p1,是从7.4p1版本直接升级上来的,先需要将9.0p1版本升级至9.3p1版本。如下所示,则为源ssh和目标ssh的信息。

-操作系统openssh版本openssh安装目录openssh安装方式openssl版本openssl安装目录openssl安装方式
Centos7.6.18109.0p1/usr/local/openssh_9编译安装1.1.1/usr/local/openssl编译安装
目标Centos7.6.18109.3p1/usr/local/openssh-9.3p1编译安装3.1.0/usr/local/openssl-3.1.0编译安装

注意:升级后由于加密算法的区别,低版本的SSH工具可能无法连接,建议改用Xshell7或SecureCRT9.0以上版本。


二、注意事项

1、 检查防火墙或selinux是否关闭
2、 新前一定要多开1个或1个以上ssh终端,一旦更新失败当前shell终端是无法操作的,也就无法进行版本回退
3、 升级前一定要对ssh进行备份,避免更新失败时能回滚
4、升级前一定要提前在测试环境验证,运行一段时间,确认没有问题才可在生产环境进行更新操作。
5、对于生产环境主机数量比较多时,建议先在1台或几台服务器上更新,运行一段时间,确认没有问题再执行批量更新操作。

总结:对于以上需要注意的内容,建议大家务必重视,小心谨慎总没错的。


三、升级步骤

3.1、准备工作

1、安装依赖

yum install -y gcc gcc-c++ perl perl-IPC-Cmd pam pam-devel

2、下载tar包并解压

cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.1.0.tar.gz --no-check-certificate
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz 
wget http://www.zlib.net/zlib-1.2.13.tar.gz
tar axf openssh-9.3p1.tar.gz && tar axf openssl-3.1.0.tar.gz && tar axf zlib-1.2.13.tar.gz

3.2、备份文件

1、备份openssl

说明:由于之前的openssl是编译安装的,且/usr/bin/openssl文件和/usr/include/openssl目录均是软连接,所以不用备份,后期如果需要回退版本,则可以重新添加软连接即可。

如下图所示:
在这里插入图片描述


2、备份openssh

mv /etc/ssh /etc/ssh_bak
mkdir /usr/bin/bak
\cp -arpf /usr/bin/{cp,sftp,ssh,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan} /usr/bin/bak/
\cp -arpf /usr/sbin/sshd /usr/sbin/sshd_bak
\cp -arpf /etc/sysconfig/sshd /etc/sysconfig/sshd_bak
\cp -arpf /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bak
\cp -arpf /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_bak
\cp -arpf /etc/pam.d/sshd /etc/pam.d/sshd_bak

说明:如果cp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan等二进制文件是软连接,这里就不需要备份,请直接删除这些软连接,后续如果还原的时候请从这些文件的源路径里拷贝即可。当前环境不是软连接,所以对这些二进制文件进行备份。


3.3、编译安装zlib

cd zlib-1.2.13
./configure --prefix=/usr/local/zlib-1.2.13 && make -j 4 && make install

3.4、编译安装openssl

1、编译安装

cd openssl-3.1.0
./config --prefix=/usr/local/openssl-3.1.0
make -j 4 && make install

2、编辑ld.so.conf文件

echo '/usr/local/openssl-3.1.0/lib64' >> /etc/ld.so.conf
ldconfig -v

3、创建操作系统软链接

ln -s /usr/local/openssl-3.1.0/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl-3.1.0/include/openssl /usr/include/openssl
ll -s /usr/bin/openssl
ll -s /usr/include/openssl

4、检查Openssl版本

openssl version
OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023)

3.5、编译安装openssh

1、编译安装

cd openssh-9.3p1
./configure --prefix=/usr/local/openssh-9.3p1 --sysconfdir=/etc/ssh --with-pam \
--with-ssl-dir=/usr/local/openssl-3.1.0 --with-zlib=/usr/local/zlib-1.2.13 --without-hardening
make && make install

2、替换新版本openssh相关命令

\cp -arf /usr/local/openssh-9.3p1/bin/scp /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/sftp /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/ssh /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/ssh-add /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/ssh-agent /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/ssh-keygen /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/bin/ssh-keyscan /usr/bin/
\cp -arf /usr/local/openssh-9.3p1/sbin/sshd /usr/sbin/sshd

3、拷贝启动脚本

\cp -a contrib/redhat/sshd.init /etc/init.d/sshd
\cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd

5、修改配置文件

vi /etc/ssh/sshd_config
PermitRootLogin yes

6、设置开机启动,并验证版本

systemctl daemon-reload
systemctl enable sshd.socket
systemctl start sshd
ssh -V
OpenSSH_9.3p1, OpenSSL 3.1.0 14 Mar 2023

注意:在configure openssh时,有设置参数 –with-pam,会提示PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail. Example PAM control files can be found in the contrib/subdirectory,在此之后登录服务器时,会发生登陆失败的问题。再次把UserPAM的参数禁用掉才可以正常登录服务器。

解决方法如下:

# 备份原文件/etc/pam.d/sshd,将以下内容覆盖写入/etc/pam.d/sshd
vim /etc/pam.d/sshd
#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

六、版本回退

回滚前:

[root@localhost ~]# ssh -V
OpenSSH_9.3p1, OpenSSL 3.1.0 14 Mar 2023

回滚操作:

1、回滚openssl

rm -f /usr/bin/openssl 
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 
rm -f /usr/include/openssl 
ln -s /usr/local/openssl/includeopenssl /usr/include/openssl
openssl version 
OpenSSL 1.1.1o  3 May 2022

2、回滚openssh

rm -rf /etc/ssh 
mv /etc/ssh_bak /etc/ssh 
\cp -arpf /usr/bin/bak/cp /usr/bin/cp
\cp -arpf /usr/bin/bak/sftp /usr/bin/sftp 
\cp -arpf /usr/bin/bak/ssh /usr/bin/ssh 
\cp -arpf /usr/bin/bak/ssh-add /usr/bin/ssh-add 
\cp -arpf /usr/bin/bak/ssh-agent /usr/bin/ssh-agent 
\cp -arpf /usr/bin/bak/ssh-keygen /usr/bin/ssh-keygen 
\cp -arpf /usr/bin/bak/ssh-keyscan /usr/bin/ssh-keyscan 
\cp -arpf /usr/sbin/sshd_bak /usr/sbin/sshd 
\cp -arpf /etc/sysconfig/sshd_bak /etc/sysconfig/sshd 
\cp -arpf /usr/lib/systemd/system/sshd.service_bak /usr/lib/systemd/system/sshd.service 
\cp -arpf /etc/pam.d/sshd.pam_bak /etc/pam.d/sshd.pam 
\cp -arpf /etc/pam.d/sshd_bak /etc/pam.d/sshd 
systemctl daemon-reload
systemctl restart sshd
rm -rf /usr/bin/bak
rm -f /usr/sbin/sshd_bak
rm -f /usr/lib/systemd/system/sshd.service_bak
rm -f /etc/pam.d/sshd.pam_bak
rm -f /etc/pam.d/sshd_bak
rm -f /etc/sysconfig/sshd_bak

回滚后:

[root@localhost ~]# ssh -V
OpenSSH_9.0p1, OpenSSL 1.1.1o  3 May 2022

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结

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

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

相关文章

你感到迷茫吗?【笔记】

你感到迷茫吗?【笔记】 前言推荐你感到迷茫吗?原通工19级-西电电院(电子信息雷达方向-专硕三年)原计科19级-西邮计院(软件工程方向-学硕三年)原计科19级-北京360(月薪-1w)现计科20级(考研:~~不公开处理~~ 物联网)对后来…

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子,它模拟了同时有 5000 个用户,循环 10 次的情况‍。 请求默认配置 如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的性能测…

在电脑上如何调整照片kb大小?怎么压缩图片不改变清晰度?

当我们使用图片时,如果需要压缩图片大小该怎么处理?可以使用图片压缩工具在线操作的方法解决,今天就分享一款图片在线处理工具,打开浏览器即可完成图片压缩(https://www.yasuotu.com),下面是详细…

LLaMA模型指令微调 字节跳动多模态视频大模型 Valley 论文详解

Valley: Video Assistant with Large Language model Enhanced abilitY 大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师,带来最新的前沿AI知识和工具,包括AI相关技术、ChatGPT、AI绘图等&…

性能测试工具的重要性及其应用

在现代的软件开发过程中,性能测试是不可或缺的一环。性能测试旨在评估系统或应用程序在特定负载条件下的性能表现,帮助开发团队识别潜在的性能瓶颈和问题。而性能测试工具作为辅助工具,发挥着至关重要的作用。以下是性能测试工具的重要性及其…

vue 2.0 的使用

day01 1. Vue简介 一套用于构建用户界面的 <font colorred>渐进式框架</font> 2. 初识Vue 2.1 搭建Vue开发环境 第一步&#xff1a;去<a href"https://v2.cn.vuejs.org/">Vue2官网</a>&#xff0c;下载依赖包。 第二步&#xff1a;在 …

教你如何优雅的管理UDP接口——Python

设计思路主要参考了Flask框架&#xff0c;通过 route() 装饰器来告诉 UDE触发函数的 URL&#xff0c;通过蓝图接口进行分类管理。 ude.py 代码内容 import socket import msgpackclass UDE:def __init__(self):self.urls {}# 回调函数def Callback(self, packet):try:data …

vue中elementUI表单循环验证

进行验证的步骤 1、表单el-form 添加 :model"form" ref"form" :rules"rules"&#xff0c;注意是 :model"form"不是v-model&#xff0c;而后每个el-form-item绑定prop 2、不循环的示例在官网可看 3、循环表单的验证&#xff1a;3-1、e…

QT 之蓝牙编程

简介 使用PC蓝牙和蓝牙透传模块通讯。使用Android蓝牙和蓝牙透传模块通讯。 准备 QT core gui bluetoothQT蓝牙库相关头文件 #include <QtBluetooth/qbluetoothglobal.h> #include <QtBluetooth/qbluetoothlocaldevice.h> #include <qbluetoothaddre…

6.2.5 网络基本服务----动态主机配置协议DHCP

6.2.5 网络基本服务----动态主机配置协议DHCP 动态主机配置协议允许一台计算机加入新的网络时可自动获取网络配置信息&#xff0c;不用人工参与。连网的计算机需要配置的参数包括 IP地址子网掩码默认路由器的IP地址域名服务器IP地址 DHCP与DNS、FTP、Telnet一样也采用客户服…

Jetbot TinyML Create Sin

浏览器访问ip(oled上显示的ip地址):8888&#xff0c;如192.168.10107:8888&#xff0c;Password:jetbot。 双击Notebool下的Python 3&#xff0c;然后编辑代码&#xff1a; import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import math#Well gen…

医疗器械外贸ERP软件:优化资源分配,提升企业竞争力

随着医疗器械外贸业务的不断发展&#xff0c;外贸业务管理ERP软件已经成为了医疗器械企业必不可少的一项工具。该软件解决方案可以有效地帮助企业管理海外市场、跟进海外订单、协调供应链等关键业务。 医疗器械外贸行业管理难点&#xff1a; 1、法规和标准&#xff1a;涉及到不…

博客系统(Servlet)

我们的目标是实现一个带有服务器版本的博客系统&#xff08;重点关注后端开发&#xff09; 1.准备工作 1&#xff09;创建web项目 2&#xff09;创建相应的目录结构、 3&#xff09;配置pom.xml <?xml version"1.0" encoding"UTF-8"?> <pro…

【玩转Linux操作】一文带你明白Shell的判断,循环语句

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;判断语句⭐单层if&#x1f388;示例 ⭐…

C++ 最长子段和

最大子段和详解_最大字段和_Niteip的博客-CSDN博客 #include <iostream> #include <sstream> #include <vector> #include <string> #include <algorithm> #include <climits> #include <unordered_map> #include <set>using…

ElementUI —— Cascader 级联选择器

前言&#xff1a; 项目中使用Cascader级联选择器&#xff0c;通过递归处理后端接口返回的数据。 function fn(temp) {let newArr [];for (let i 0; i < temp.length; i) {let obj {};obj.value temp[i].name;obj.label temp[i].name;obj.children [];if (temp[i].chil…

Python爬虫实战之原神公告获取

前言 好久不见了吧&#xff0c;博主最近也是成为了准高三&#xff0c;没有太多时间去创作文章了&#xff0c;所以这篇文章很有可能是高考前最后一篇文章了(也不一定&#x1f609;) 言归正传&#xff0c;本次文章主要讲解如何去爬取原神官网的公告(我不玩原神&#xff01;&…

如何在WordPress网站中嵌入TikTok视频(3个简单方法)

您想轻松地将 TikTok 视频嵌入您的 WordPress 网站吗&#xff1f; 如果您已经创建了成功的、病毒式传播的 TikTok&#xff0c;那么将这些视频发布到您的网站也是有意义的。通过这种方式&#xff0c;您只需很少的额外努力就能获得更多的观看次数、参与度和社交媒体关注者。 在…

企业面临数字化转型,有什么建议吗?

数字化转型是一个综合过程&#xff0c;涉及利用数字技术增强业务运营、改善客户体验并推动创新。企业数字化转型的一些建议&#xff1a; 制定清晰的愿景&#xff1a;定义数字化转型目标并创建与业务目标相符的愿景。这将有助于指导数字化并确保它们的驱动目标。 拥抱云计算&am…

盲盒抽奖小程序源码-带H5端可打包APP_带安装教程

1.新建站点。上传后台源码文化到新建站点&#xff0c;解压跟目录&#xff01;&#xff01; 2. 导入数据库文件&#xff0c;修改数据库信息&#xff0c;&#xff08;数据库根目录 .env 文件&#xff09; 3. 修改网站运行目录 《运行目录为/public 》 4. 修改伪静态 《伪静态t…