《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

一、环境信息

操作系统:Centos7.6.1810
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips

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

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


二、注意事项

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

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


三、升级步骤

3.1、安装telnet

注意:安装telnet,防止ssh安装失败无法连接。

1、安装Telnet

注意:一般Linux系统自带Telnet客户端,我们只需要安装服务端即可;另外Telnet运行需要依靠xinetd组件,安装命令如下所示:

yum install telnet-server.x86_64 xinetd.x86_64 -y

2、运行telnet服务

systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
systemctl status telnet.socket

3、移除文件

注意:Linux系统中默认不允许root账户telnet远程登录,这里需要移除配置文件,保证root账户能够远程登录。

mv /etc/securetty /etc/securetty.bak

4、使用telnet协议连接服务器,如下图所示:
在这里插入图片描述


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.4p1.tar.gz 
wget http://www.zlib.net/zlib-1.2.13.tar.gz
tar axf openssh-9.4p1.tar.gz && tar axf openssl-3.1.0.tar.gz && tar axf zlib-1.2.13.tar.gz

3.2、备份文件

1、备份openssl

mv /usr/bin/openssl /usr/bin/openssl.old

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 /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 && 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、编译安装
注意:在configure openssh时,可以去掉–with-pam编译参数。

cd openssh-9.4p1
./configure --prefix=/usr/local/openssh-9.4p1 --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
#或者
cd openssh-9.4p1
./configure --prefix=/usr/local/openssh-9.4p1 --sysconfdir=/etc/ssh  \
--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 -arpf /usr/local/openssh-9.4p1/bin/scp /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/sftp /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/ssh /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/ssh-add /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/ssh-agent /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/ssh-keygen /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/bin/ssh-keyscan /usr/bin/
\cp -arpf /usr/local/openssh-9.4p1/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
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak

5、修改配置文件

vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
UsePAM no
UseDNS no

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

systemctl daemon-reload
systemctl enable sshd.socket
sshd -t
systemctl restart sshd
ssh -V
OpenSSH_9.4p1, OpenSSL 3.1.0 14 Mar 2023

注意:在configure openssh时,有设置参数 –with-pam,在此之后登录服务器时,会发生登陆失败的问题。

解决方法一如下:

vi /etc/ssh/sshd_config
UsePAM no

解决方法二如下:

# 备份原文件/etc/pam.d/sshd,将以下内容覆盖写入/etc/pam.d/sshd
vim /etc/pam.d/sshd
#%PAM-1.0
auth       substack     password-auth
auth       include      postlogin
account    required     pam_sepermit.so
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    optional     pam_motd.so
session    include      password-auth
session    include      postlogin

六、版本回退

回滚前:

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

回滚操作:

1、回滚openssl

rm -f /usr/bin/openssl 
mv /usr/bin/openssl.old /usr/bin/openssl 
openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

2、回滚openssh

2.1、恢复/etc/ssh目录

rm -rf /etc/ssh 
mv /etc/ssh.bak /etc/ssh 

2.2、恢复cp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan命令

\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 
rm -rf /usr/bin/bak

2.3、恢复sshd命令

\mv /usr/sbin/sshd.bak /usr/sbin/sshd 
\mv /etc/sysconfig/sshd.bak /etc/sysconfig/sshd 

2.4、重启sshd服务

systemctl daemon-reload
systemctl restart sshd

回滚后:

[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

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

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

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

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

相关文章

URL 管理器

基本介绍 对外接口 对外提供两个接口:一个可以提取URL,一个可以增加URL,分别对应图上的1和2。 当要爬取某个网页时,则可以从1接口提取出该网页的URL进行爬取。 有时候爬取的网页内容中会包含别的网页链接,即包含有U…

【LeetCode-简单题】剑指 Offer 05. 替换空格

文章目录 题目方法一:常规做法:方法二:双指针做法 题目 方法一:常规做法: class Solution {public String replaceSpace(String s) {int len s.length() ;StringBuffer str new StringBuffer();for(int i 0 ; i &l…

unity 使用Photon进行网络同步

Pun使用教程 第一步:请确保使用的 Unity 版本等于或高于 2017.4(不建议使用测试版)创建一个新项目。 第二步:打开资源商店并找到 PUN 2 资源并下载/安装它。 导入所有资源后,让 Unity 重新编译。 第三步&#xf…

Java文字描边效果实现

效果: FontUtil工具类的完整代码如下: 其中实现描边效果的函数为:generateAdaptiveStrokeFontImage() package com.ncarzone.data.contentcenter.biz.img.util;import org.springframework.core.io.ClassPathResource; import org.springfr…

Prompt-To-Prompt——仅通过文本进行图像编辑

文章目录 1.摘要2.算法2.1 Cross-attention in text-conditioned Diffusion Models2.2 Controlling the Cross-attentionWord SwapAdding a New PhraseAttention Re–weighting 3.应用Text-Only Localized EditingGlobal editingFader Control using Attention Re-weightingRea…

HPC集群自动弹性扩缩的两种实现方式

常青藤 HPC常青园 2023-07-28 19:48 发表于北京 弹性扩缩技术正在成为HPC集群中的一项重要技术。它可以根据实际需求动态调整集群资源,应对用户负载的波动。对于运维团队来说,自动弹性扩缩能够减轻集群运维负担,提高集群资源利用率&#xff0…

Kettle REST Client获取token调用接口解析JSON入文件实例

Kettle REST Client获取token调用接口解析JSON入文件实例 需求说明 通过kettle组件调用接口并解析JSON成结构化数据入文件。 完整实例 解决方法 利用生成记录组件定义URL参数通过REST ClENT组件请求得到TOKEN通过JSON INPUT组件解析接口请求的结果通过JAVASCRIPT组件拼接生…

储存高精长整型の另一种思路——二维数组

利用二维数组储存高精长整型 题目解题思路问题解决代码实现总结反思 题目 luogu P2437 蜜蜂路线 解题思路 最初只觉得是一道很简单的递推 先考虑从第一个点出发的情况,对于第 k ( k ≥ 3 ) k (k≥3) k(k≥3)个点,路线数表示如下: a [ k …

【二叉搜索树】将有序数组转换为二叉搜索树-力扣 108 题

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

人工智能AI 全栈体系(四)

第一章 神经网络是如何实现的 除了全连接神经网络外,还有其他形式的神经网络。 此节将讲述神经网络的另一种形式:卷积神经网络。 四、卷积神经网络 首先我们看看全连接神经网络有什么不足。正如其名字一样,全连接神经网络,两个…

vscode json 无决找到“e:\...“

在上一章中提到了解决 无法使用 compilerPath 的问题,该问题明显是相对路径配置错误。 但是解决该问题后,发现输出了新的问题: 由该输出可知,在 e:\gitsource\ODrive-fw-v0.5.1\Firmware\ 路径下未找到 D:\gcc-arm-none-eabi-10.3-2021.10…

004-Windows下开发环境搭建

Windows下开发环境搭建 文章目录 Windows下开发环境搭建项目介绍版本控制工具Git 与 SVNWindow下安装Git Qt 开发工具静态编译Qt环境安装 串口模拟器比较工具SQLite 数据库查看小工具预告 关键字: Qt、 Qml、 开发环境、 Windows、 C 项目介绍 欢迎来到我们的 …