升级说明:

1、所有升级文件均从官网下载。

2、linux服务器系统为Centos7可适用此方案。

3、Centos7系统需要有yum源,方便解决依赖关系问题。如无法实现,则需上传同系统版本安装映像文件,作为本地yum源。

4、安装过程受网络影响极大,一旦出现不可抗因素致网络断开,可能会导致升级中断,无法远程 连接,出现此情况需现场人员配合解决。

5、升级过程出现问题需现场人员根据回退方案进行恢复操作。

升级过程:

1、安装并启用telnet

1、安装telnet

yum install -y telnet-server telnet xinet

#命令解释如下:

yum install:这是用来安装软件包的命令。

telnet-server:这是telnet服务器软件包的名称,安装后可以远程登录到系统。

telnet:这是telnet客户端软件包的名称,用于远程登录到其他系统。

xinetd:这是一个超级服务器,它管理其他服务的进程,如telnet。在安装telnet服务时,通常需要xinetd来管理telnet服务。

-y:这个选项表示自动回答所有提示为“是”,即在安装过程中不会询问用户确认。

#安装完成以后使用:检查一下是否有正确安装完成.

yum list installed | grep xinetd

yum list installed | grep telnet

#检查xinet服务是否正常启动

systemctl status xinetd

没有启动的话,启动一下:

systemctl start xinetd

设置开机自启:

systemctl enable xinetd

2、修改配置文件

vi /etc/xinetd.d/telnet

#如果没有自动生成telnet配置文件的话,需要手动创建一下

service telnet

{

disable = no

port = 23

flags = REUSE

socket_type = stream

wait = no

user = root

server =/usr/sbin/in.telnetd

log_on_failure += USERID

}

{

disable = no

# 这个选项设置为 "no" 表示服务是启用的。如果设置为 "yes",则服务将被禁用。

port = 23

# 指定服务监听的端口号。对于 telnet,默认端口是 23。

flags = REUSE

# 设置服务的标志。"REUSE" 标志允许服务重用本地地址和端口,这在某些情况下可以提高性能。

socket_type = stream

# 指定套接字类型。"stream" 表示使用面向流的套接字,这是 TCP 协议的类型。

wait = no

# 设置为 "no" 表示 xinetd 将不会等待服务进程完全启动就接受新的连接请求。

user = root

# 指定运行服务进程的用户。在这里,服务将以 root 用户身份运行。

server =/usr/sbin/in.telnetd

# 指定服务的可执行文件路径。这是启动 telnet 服务的程序。使用ll /usr/sbin/in.telnetd检查一下

文件是否存在

log_on_failure += USERID

# 在连接失败时,记录失败的尝试。"USERID" 表示记录尝试连接的用户 ID。

}

disable= no //将yes改为no

#让root可以登录,备份该文件

#mv /etc/securetty /etc/securetty.bak

#securetty是一个用于控制哪些终端设备可以以root用户身份登录的系统文件。将文件修改以后才可以使用telnet登录root用户

重启服务

systemctl restart xinetd

或重启telnet服务

service telnet.socket restart

3、启动相应服务,然后使用telnet登录到服务器

systemctl restart xinetd

 (一)配置yum源

1、上传与生产环境相同的centos7版本的iso和openssh8.6p1的安装包到服务器。

 链接:https://pan.baidu.com/s/1GAndZ5y7QKcv7Wg-woCd8g  提取码:ts6u 

 2、挂载iso

创建iso存放目录和挂载目录,并上传iso镜像文件到iso存放目录/mnt/iso下

mkdir /mnt/iso

mkdir /mnt/cdrom

mv CentOS-7.6-x86_64-DVD-1810.iso /mnt/iso/

挂载iso镜像到挂载目录/mnt/cdrom下

mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom

使用df -h命令查询挂载是否成功

df -h

 3、备份原本地源

进入repos配置目录

cd /etc/yum.repos.d/

创建备份文件夹

mkdir yum.repos.d.bak -p

移动配置文件到yum.repos.d.bak文件夹中

mv *.repo yum.repos.d.bak/

4、新建光盘源配置文件

 vi CentOS-Media.repo

[c7-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom/

gpgcheck=0

enabled=1

5、测试安装源 

 清除 yum 缓存中的所有数据

yum clean all

 重新生成缓存

yum makecache

(二)升级openssh版本到8.6p1 

 1、下载或上传安装包openssh-8.6p1.tar.gz到/root目录下

 进入安装包所在文件夹,创建文件夹

mkdir -p /root/linshi

mv openssh-8.6p1.tar.gz /root/linshi/

2、关闭Selinux 

setenforce 0 #临时关闭selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #永久关闭selinux

 #getenforce检查是否关闭.显示Disabled则已关闭

3、安装依赖关系 

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

#可以使用rpm -q 检查依赖软件是否有安装上

#例:rpm -q gcc

cd到/root/linshi文件夹中解压openssh8.6p的压缩包

tar -xvf openssh-8.6p1.tar.gz

cd openssh-8.6p1/

4、卸载旧版openssh

查询旧版openssh是否存在

rpm -qa |grep openssh

 ps:下一步骤为删除原有ssh,但不会影响现在进行的ssh会话,所以整个操作过程不要断开ssh会话, 否则无法再次连接,只能由现场人员进行回退后重新操作(推荐使用telnet进行升级)。

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

#rpm -qa | grep openssh:这个命令会列出所有已安装的软件包,并通过 grep 过滤出包含 "openssh" 的软件包名称。

for i in $(rpm -qa | grep openssh); do ... done:这是一个 for 循环,它遍历上一步得到的包含 "openssh" 的软件包列表。每次循环迭代都会将一个软件包名称赋值给变量 i。

rpm -e $i --nodeps:在循环体内,这个命令尝试卸载当前迭代中的软件包(由变量 i 表示)。-e 参数表示 "erase"(卸载),而 --nodeps 参数告诉 rpm 在卸载过程中忽略依赖性检查。

done:这是 for 循环的结束标志。

 5、设置、编译、安装

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl/lib --without-hardening

 ./configure 是用于配置 OpenSSH 源代码以便进行编译和安装的。这个命令设置了一系列的配置选项,这些选项定义了 OpenSSH 的安装路径、功能和依赖关系。下面是命令中各个选项的解释:

./configure:这是配置脚本的名称,通常位于源代码包的根目录中。执行这个脚本会检查系统环境并生成 Makefile,以便后续的编译过程。 --prefix=/usr:设置 OpenSSH 的安装前缀为 /usr。这是大多数系统的标准安装路径。 --sysconfdir=/etc/ssh:设置系统配置文件的目录为 /etc/ssh。这通常包括 sshd_config 和 ssh_config 文件。 --with-md5-passwords:启用 MD5 加密密码的支持。请注意,MD5 是一种不再被认为是安全的加密算法,通常建议使用更安全的算法,如 SHA-256。 --with-pam:启用 Pluggable Authentication Modules (PAM) 支持,允许 OpenSSH 使用 PAM 进行用户认证。 --with-tcp-wrappers:启用 TCP Wrappers 支持,这是一个提供网络服务访问控制的系统。 --with-ssl-dir=/usr/local/ssl/lib:指定 SSL 库文件的路径。在这个例子中,SSL 库被假定位于 /usr/local/ssl/lib。 --without-hardening:禁用了一些安全硬化选项。这些选项通常用于提高系统的安全性,但在某些情况下可能会与特定的系统环境不兼容。

 完成配置后

#编译

make

#安装

make install

6、设置自启动

复制启动脚本到/etc/init.d 

cp contrib/redhat/sshd.init /etc/init.d/sshd

配置SSH服务 

chkconfig --add sshd

chkconfig sshd on

chkconfig --list|grep sshd

sed -i "32a PermitRootLogin yes" /etc/ssh/sshd_config

chkconfig --add sshd: 这个命令用于向系统的服务管理器 chkconfig 添加一个新的服务条目。sshd 是 SSH 守护进程的名称,这个命令会创建一个新的服务条目,以便在系统启动时自动启动 SSH 服务。 chkconfig sshd on: 这个命令用于设置 sshd 服务在所有运行级别(通常是 3、4、5)上自动启动。这确保了 SSH 服务在系统启动时会被激活。 chkconfig --list|grep sshd: 这个命令用于列出所有服务的状态,并使用 grep 过滤出与 sshd 相关的行。这可以帮助您确认 sshd 服务是否已经正确设置为自动启动。 sed -i "32a PermitRootLogin yes" /etc/ssh/sshd_config: 这个命令使用 sed(流编辑器)在 /etc/ssh/sshd_config 文件中添加一行配置。-i 选项表示直接修改文件,32a 表示在第 32 行之后添加内容。如果第 32 行不存在,内容会被添加到文件末尾。PermitRootLogin yes 是添加的配置行,它允许 root 用户通过 SSH 登录。

重启ssh服务

service sshd restart

 7、检查升级情况

 输出版本号为“OpenSSH_8.6p1”,说明更新成功

ssh -V

 (三)关闭telnet

 关闭服务

systemctl stop telnet.socket

systemctl stop xinetd

#root可以登录

#mv /etc/securetty.bak /etc/securetty

ps:此时ssh是可以连接状态,不要断开连接防止修改出错无法连接服务器。测试新端口是否打开 telnet 127.0.0.1 22 #出现如下显示表示端口正常打开 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. SSH-2.0-OpenSSH_8.6 使用远程工具新开窗口,连接新端口测试修改是否成功,如有问题马上使用之前的连接进行检查修改。

(四)回退方案 

 1、挂载iso文件作为yum源

mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom

2、yum安装ssh

openssh yum install openssh*

3、启动ssh服务

service sshd start

4、重新连接ssh,然后从(二)4开始做。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: