centos7|操作系统|低版本的OpenSSH升级到最新版本OpenSSH-9.8.p1

news2024/9/19 14:30:00

前言:

1、

OpenSSH是什么
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。

2、

OpenSSH和telnet有什么区别?

两者都是通过网络协议连接服务器的工具,但OpenSSH是使用的TCP协议,更为安全,而telnet则是使用的UDP协议,从根本上来说,这个协议是不安全,不可控的,因此,telnet并不能取代sshd,在生产环境通常也是禁止使用telnet来进行远程连接的

3、

为什么要升级OpenSSH
OpenSSH是用于安全远程登录和其他安全网络服务的软件包,对于大多数Linux发行版来说,它都是默认安装的。随着时间的推移,OpenSSH的新版本可能会引入安全性更新和改进,因此升级到最新版本是很有必要的。特别是对于CentOS 7,由于它已经停止了官方支持,因此及时升级系统组件变得更加重要。

4、

OpenSSH升级的必要流程

第一,需要对旧的sshd以及客户端ssh以及相关配置文件做备份;

第二,获取到需要的安装升级包,可以是源码包的形式也可以是rpm包或者deb等等的形式;

第三,需要给自己留一个后门,防止升级失败把自己关在门外的情况发生,通常,我们是暂时启用telnet连接,并测试好telnet,确定telnet是可用的就可以了;

第四、开始正式升级安装sshd服务,可以是yum 或者apt升级的形式,也可以是rpm -Uvh这样的形式,也可以是编译安装并配置动态链接库,运行程序,配置文件这样的形式;

第五、OpenSSH升级安装完成后,检测sshd服务是否正常,可用,检查OpenSSH的各项功能,检查OpenSSH的版本

第六、如果发现OpenSSH升级有问题,不能正常ssh链接服务器,执行回滚操作,主要是利用第一步的备份文件进行恢复

第七、如果OpenSSH升级确认没有问题,清除安装过程产生的垃圾文件,关闭telnet这个后门,圆满结束此次升级工作

🆗,我已经在虚拟机编译生成了一个可用的OpenSSH rpm包,可用于centos7全系列,欧拉2.0以及欧拉2.5系列服务器

二、

OpenSSH最新版本9.8.p1版本的rpm包下载地址

链接:https://pan.baidu.com/s/1c1bq8wvXQE4fo0BKjpyr-A?pwd=sshd 
提取码:sshd 

三、

备份sshd

二进制文件不需要备份,主要是备份配置文件,命令为

cp -r /etc/ssh{,.bak}


四、

telnet-server的安装

该服务安装非常简单,一般配置好本地仓库就可以非常简单的安装了,安装命令为:

yum install telnet-server -y 

修改telnet的配置文件,不要使用默认端口23,然后开放telnet连接权限,启动telnet服务就可以了

修改/usr/lib/systemd/system/telnet.socke 这个文件,端口修改为10023

[Unit]
Description=Telnet Server Activation Socket
Documentation=man:telnetd(8)

[Socket]
ListenStream=23
Accept=true

[Install]
WantedBy=sockets.target

开放telnet连接权限,这个pts/数字是表示登陆的终端号,必须要有这些才允许登陆:

echo "pts/0">>/etc/securetty
echo "pts/1">>/etc/securetty
echo "pts/2">>/etc/securetty
echo "pts/3">>/etc/securetty
echo "pts/4">>/etc/securetty

启动telnet服务,然后随便打开一个xshell,并配置协议为telnet 测试是否可以成功连接就可以了

启动telnet服务命令:

systemctl start telnet.socket

五、

正式升级OpenSSH

这一步非常简单,如果是把这些rpm包制作成yum仓库,使用yum安装,会自动给你备份配置文件,如果rpm安装,不会自动备份配置文件

rpm命令为:

rpm -Uvh *.rpm


该命令会将旧的rpm包删除,大体执行后的日志如下:

[root@centos10 x86_64]# rpm -Uvh ./*.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:openssh-9.8p1-1.el7              ################################# [ 13%]
   2:openssh-askpass-gnome-9.8p1-1.el7################################# [ 25%]
   3:openssh-clients-9.8p1-1.el7      ################################# [ 38%]
   4:openssh-server-9.8p1-1.el7       ################################# [ 50%]
   5:openssh-debuginfo-9.8p1-1.el7    ################################# [ 63%]
Cleaning up / removing...
   6:openssh-server-7.4p1-21.el7      ################################# [ 75%]
   7:openssh-clients-7.4p1-21.el7     ################################# [ 88%]
   8:openssh-7.4p1-21.el7             ################################# [100%]

六、

测试sshd服务是否正常

1、

打印sshd服务的版本号

[root@centos10 x86_64]# sshd -V
OpenSSH_9.8p1, without OpenSSL

 这里稍微解释一下,without OpenSSL并不是说OpenSSL  就不需要了,只是我编译的时候和OpenSSL解绑了而已OpenSSH服务完全是可以正常使用的,这点无需担心

2、

ssh-keygen 生成密钥

[root@centos10 x86_64]# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): 
/root/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:qtiHX2pKI0C88MsRMvVXjMLIXIt5PmOAa1+ziY9clgU root@centos10
The key's randomart image is:
+--[ED25519 256]--+
| o.+.  o.        |
|.o++o....        |
|=o= +E.          |
|o=.= ..          |
|ooo =o .S        |
|.o.+oo*.         |
|  +ooB. .        |
|  .=*ooo         |
|  .o+*o          |
+----[SHA256]-----+

可以看到十分正常的就生成了,但是需要说明一点rsa密钥用不了,原因未知,如果介意就不要用这个升级包了

3、

ssh-copy-id  

在上面的百度网盘内有提供,放到系统环境变量下就可以使用了,经测试该命令也是没有问题的

其它的ssh族命令经测试都是正常的,这里我就不把测试结果贴出来了

4、

sshd服务的重启

sshd服务重启命令为

systemctl restart sshd

第一次重启,发现有很多报错,无所谓,这个说的是证书文件权限太高而已,都修改成0600权限就可以了 

- Unit sshd.service has finished shutting down.
Jul 08 04:38:48 centos10 systemd[1]: Starting SYSV: OpenSSH server daemon...
-- Subject: Unit sshd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit sshd.service has begun starting up.
Jul 08 04:38:48 centos10 sshd[27344]: Starting sshd:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Jul 08 04:38:48 centos10 sshd[27344]: @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Jul 08 04:38:48 centos10 sshd[27344]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Jul 08 04:38:48 centos10 sshd[27344]: Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
Jul 08 04:38:48 centos10 sshd[27344]: It is required that your private key files are NOT accessible by others.
Jul 08 04:38:48 centos10 sshd[27344]: This private key will be ignored.
Jul 08 04:38:48 centos10 sshd[27344]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Jul 08 04:38:48 centos10 sshd[27344]: @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Jul 08 04:38:48 centos10 sshd[27344]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Jul 08 04:38:48 centos10 sshd[27344]: Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
Jul 08 04:38:48 centos10 sshd[27344]: It is required that your private key files are NOT accessible by others.
Jul 08 04:38:48 centos10 sshd[27344]: This private key will be ignored.
Jul 08 04:38:48 centos10 sshd[27344]: sshd: no hostkeys available -- exiting.
Jul 08 04:38:48 centos10 sshd[27344]: [FAILED]
Jul 08 04:38:48 centos10 systemd[1]: sshd.service: control process exited, code=exited status=1
Jul 08 04:38:48 centos10 systemd[1]: Failed to start SYSV: OpenSSH server daemon.
-- Subject: Unit sshd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

例如:

chmod 0600 /etc/ssh/ssh_host_ed25519_key

权限文件解决后,查看sshd服务的配置文件,确认没有问题,再次重启sshd服务就可以结束升级了

七、

关于回滚问题

for i in `rpm -qa |grep openssh`;do rpm -e $i --nodeps ;done

一般用for循环强制删除,删除后,利用本地仓库安装原来的旧sshd服务就可以了

本地仓库相关知识见我的博客:Linux的完全本地仓库搭建指南(科普扫盲贴)_linux7如何搭建本地仓库-CSDN博客

OpenSSH-9.8.p1的源码安装包的下载地址:https://openbsd.cs.toronto.edu/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

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

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

相关文章

集合复习(java)

文章目录 Collection 接口Collection结构图Collection接口中的方法Iterator 与 Iterable 接口Collection集合遍历方式迭代器遍历增强 for 遍历 List(线性表)List特有方法ArrayList(可变数组)ArrayList 底层原理ArrayList 底层原理…

土豆炒肉做法

菜单:土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程: 洗土豆,削皮,擦成条,用凉水过滤两遍淀粉,顺便放个燥里洗肉,切成条,按照生抽、酱油、淀粉、…

【Etabs】【Rhino】Swallow(ESD)软件的ETABS功能介绍

Swallow(ESD)软件的ETABS功能介绍 来源:https://www.food4rhino.com/app/swallowesd 文章目录 Swallow(ESD)软件的ETABS功能介绍1. Load模块1.1 Support节点支座1.2 LoadPattern荷载模式1.3 LoadPattByName引用模型荷载模式1.4 AutoWindChinese自动风荷载参数1.5 R…

【数据结构与算法】插入排序

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

Git仓库介绍

1. Github GitHub 本身是一个基于云端的代码托管平台,它提供的是远程服务,而不是一个可以安装在本地局域网的应用程序。因此,GitHub 不可以直接在本地局域网进行安装。 简介:GitHub是最流行的代码托管平台,提供了大量…

【开放集目标检测】Grounding DINO

一、引言 论文: Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection 作者: IDEA 代码: Grounding DINO 注意: 该算法是在Swin Transformer、Deformable DETR、DINO基础上…

STM32崩溃问题排查

文章目录 前言1. 问题说明2. STM32(Cortex M4内核)的寄存器3. 崩溃问题分析3.1 崩溃信息的来源是哪里?3.2 崩溃信息中的每个关键字代表的含义3.3 利用崩溃信息去查找造成崩溃的点3.4 keil5中怎么根据地址找到问题点3.5 keil5上编译时怎么输出…

数据库(表)

要求如下: 一:数据库 1,登录数据库 mysql -uroot -p123123 2,创建数据库zoo create database zoo; Query OK, 1 row affected (0.01 sec) 3,修改字符集 mysql> use zoo;---先进入数据库zoo Database changed …

护网在即,知攻善防助力每一位安服仔~

前言 是不是已经有师傅进场了呢~ 是不是有安服🐒在值守呢~ 您是不是被网上眼花缭乱的常用应急响应工具而烦恼呢? 何以解忧?唯有知攻善防! 创作起源: 驻场、护网等,有的客户现场只允许用客户机器&…

【计组OS】I/O方式笔记总结

苏泽 “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家 目录 IO方式:程序查询方式 工作原理 程序查询方式的详细流程: 1. 初始化阶段 2. 发送I/O命令 3. 循环检查状态 4. 数据传输 5. 继续查询 6…

机器人动力学模型及其线性化阻抗控制模型

机器人动力学模型 机器人动力学模型描述了机器人的运动与所受力和力矩之间的关系。这个模型考虑了机器人的质量、惯性、关节摩擦、重力等多种因素,用于预测和解释机器人在给定输入下的动态行为。动力学模型是设计机器人控制器的基础,它可以帮助我们理解…

自动化设备上位机设计 四

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 using SimpleTCP; using SqlSugar; using System.Text;namespace 自动化上位机设计 {public partial class Form1 : Form{SqlHelper sqlHelper new SqlHelper();SqlSugarClient dbContent null;bool IsRun false;i…

【MySQL基础篇】多表查询

1、多表关系 概述:项目开发中,在进行数据库表结构操作设计时,会根据业务需求及业务模板之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种…

react dangerouslySetInnerHTML将html字符串以变量方式插入页面,点击后出现编辑状态

1.插入变量 出现以下编辑状态 2.解决 给展示富文本的标签添加css样式 pointerEvents: none

windows上传app store的构建版本简单方法

我们在上传app store上架,或上传到testflight进行ios的app测试的时候,需要mac下的上传工具上传ipa文件到app store的构建版本上。 然而windows电脑这些工具是无法安装的。 因此,假如在windows上开发hbuilderx或uniapp的应用,可以…

【JavaEE】多线程进阶

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 1.锁策略1.1悲观锁和乐观锁1.2重量级锁和轻量级锁1.3自旋锁和挂起等待锁1.4可…

分子AI预测赛Task4笔记(结束)

话不多说,直接上官方链接:‌​​​‍​⁠​‌​‍​​​‌​⁠‬​‬​​‌​​​​‬‬​​​​‍⁠‍‌​⁠Task3:进阶baseline详解 - 飞书云文档 (feishu.cn)Task4:持续尝试&…

嵌入式C语言面试相关知识——内存管理(不定期更新)

嵌入式C语言面试相关知识——内存管理(不定期更新) 一、博客声明二、自问题目1、嵌入式系统的内存布局是怎么样的?2、动态内存分配在嵌入式系统中的使用有什么注意事项?3、什么是内存碎片,如何减少内存碎片&#xff1f…

用ThreadLocal解决线程隔离问题

存在的以下代码所示的线程隔离问题: package study.用ThreadLocal解决线程隔离问题;/*线程隔离 - 在多线程并发场景下,每个线程的变量都应该是相互独立的线程A:设置(变量1) 获取(变量1)线程B&a…

【数据结构与算法】希尔排序

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​