史诗级详细离线更新centos系统的openssh,升级到9.3p1!!

离线更新openssh步骤

文章目录

前言

对于可能很多人在离线更新openssh时都没找到一篇能解决实际问题的文章,那么今天它来了,请往下看。
提示:在进行生产环境操作时,需谨慎在尽可能一样的虚拟环境进行验证操作。(OS:如果不放心可以双保险,开启Telnet服务,具体步骤需自行搜索)

一、openssh是什么?

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

  OpenSSH 是一组用于安全地访问远程计算机的连接工具。 它可以作为 rlogin、 rsh rcp 以及 telnet 的直接替代品使用。 更进一步, 其他任何 TCP/IP 连接都可以通过 SSH 安全地进行隧道/转发。 OpenSSH 对所有的传输进行加密, 从而有效地阻止了窃听、 连接劫持。

  OpenSSH这一术语指系统中使用的Secure Shell软件的软件实施。用于在远程系统上安全运行shell。如果您在可提供ssh服务的远程Linux系统中拥有用户帐户,则ssh是通常用来远程登录到该系统的命令。ssh命令也可用于在远程系统中运行命令。

二、更新步骤 (以下步骤都在root权限下进行,如果权限不足需在命令前加sudo )

测试环境:我本机使用centos6.2以及7.5都测试过,因为生产环境6跟7都有。

(一) 查看相关组件版本是否存在(代码包已全部打包)

1.先查看系统版本

cat /etc/redhat-release

在这里插入图片描述

2.再根据系统版本选择对应的组件进行上传。(建议所有上传的文件放到/tmp下面)

升级OpenSSH的过程需要依赖ZLIB、Perl、OpenSSL,升级OpenSSL可能会报错,可能还需要依赖PAM。所以先要离线下载这些依赖对应的包:zlib-1.2.13.tar.gz,perl-5.20.0.tar.gz,Linux-PAM-1.3.1.tar.xz,openssl-1.1.1n.tar.gz,openssh-9.3p1.tar.gz。(安装顺序)

3.查看gcc是否存在`gcc -v`

在这里插入图片描述

如果gcc不存在就上传对应版本的gcc相关rpm包
上传完之后直接全部安装包执行

rpm -Uvh *.rpm --force --nodeps		

--force 选项表示强制执行操作,即使它可能会导致一些问题或不安全。这意味着软件包管理工具将忽略任何警告或错误,并尝试继续执行操作。
--nodeps 选项表示跳过依赖关系检查,即不检查要安装、更新或删除的软件包是否依赖于其他软件包或库。这可以用于强制执行操作,即使满足依赖关系可能会引起冲突或问题。
4. 安装/升级 zlib
which zlib		//查看是否存在zlib的路径,不存在则安装zlib
tar -zxvf zlib-1.2.13.tar.gz 
cd zlib-1.2.13
./configure --prefix=/usr/zlib
make && make install
  1. 安装/升级 Perl
perl -v 	//查看perl版本 低于5.10就不支持高版本的openssh更新
tar -zxf perl-5.20.0.tar.gz 
cd perl-5.20.0
./Configure -de
 make && make install
 perl -v

在这里插入图片描述

在这里插入图片描述

6. 安装pam-devel

tar -xf Linux-PAM-1.3.1.tar.xz 
cd Linux-PAM-1.3.1
./configure 
make && make install
  1. 安装/升级 openssl
ssh -V					//查看openssl的版本 最低不能低于1.1.1
//查看相关文件是否备份
ls -l /usr/bin/openssl*
ls -ld /usr/include*
cp /usr/bin/openssl /usr/bin/openssl.old
cp -r /usr/include /usr/includeold
//编译安装
cd /tmp
tar -zxvf openssl-1.1.1n.tar.gz
cd openssl-1.1.1n
./config --prefix=/usr --shared
make
make install
openssl version -a

在这里插入图片描述

(二) 进行openssh离线更新

1.先进行相关文件备份

cat /etc/redhat-release		//查看系统版本
ls -l /etc/pam.d/sshd*
ls -ld /etc/ssh*
cp /etc/pam.d/sshd /etc/pam.d/sshd20230612
cp -r /etc/ssh /etc/ssh20230612

2.开始进行解压缩然后进行相关操作

cd /tmp
tar -xzvf openssh-9.3p1.tar.gz
cd openssh-9.3p1
3.区分系统
centos6的系统

service sshd stop
rm -rf /etc/ssh		

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-ssl-dir=/usr/ssl
make && make install
cd contrib/redhat
cp sshd.init /etc/init.d/sshd
chkconfig sshd on
chkconfig sshd --list

cp  /etc/ssh20230612/sshd_config /etc/ssh/sshd_config
cp /etc/pam.d/sshd20230612 /etc/pam.d/sshd
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
service sshd start

centos7的系统

systemctl stop sshd.service
rm -rf /etc/ssh

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-ssl-dir=/usr/ssl
make && make install
cd contrib/redhat
cp sshd.init /etc/init.d/sshd
systemctl enable sshd
chkconfig sshd --list
cp  /etc/ssh20230612/sshd_config /etc/ssh/sshd_config
cp /etc/pam.d/sshd20230612 /etc/pam.d/sshd
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
systemctl start sshd.service

4.查看是否存在openssh的rpm包,如果不存在就不需要进行下面的步骤

rpm -qa  | grep openssh 	//查看是否存在openssh的rpm包
cd /tmp/openssh-9.3p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords  --with-ssl-dir=/usr/ssl
make
rpm -e `rpm -qa | grep openssh` --nodeps		//卸载rpm包
make install
cd contrib/redhat
cp sshd.init /etc/init.d/sshd

centos6系统

chkconfig sshd on
chkconfig sshd --list

cp  /etc/ssh20230612/sshd_config /etc/ssh/sshd_config
cp /etc/pam.d/sshd20230612 /etc/pam.d/sshd
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
service sshd start

centos7系统

systemctl enable sshd
chkconfig sshd --list

cp  /etc/ssh20230612/sshd_config /etc/ssh/sshd_config
cp /etc/pam.d/sshd20230612 /etc/pam.d/sshd
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
systemctl start sshd.service

总结

在centos6中遇到的问题如下:
找不到zlib位置,在编译的时候加上刚刚编译安装的zlib的路径,然后下面的步骤是一样的,到区分系统继续执行编译之后的命令。
在这里插入图片描述
cd /tmp/openssh-9.3p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/zlib --with-md5-passwords --with-ssl-dir=/usr/ssl //指定zlib之前安装的路径

如下报错是因为pam未安装成功,重新执行安装 pam-devel
在这里插入图片描述

此篇文章是我踩过好几个坑,深刻的教训换来的经验,如果对您有帮助麻烦点赞、收藏加关注,以后也可以互相交流一下学习经验捏。

猜你喜欢

转载自blog.csdn.net/qq_43913213/article/details/131510476