当前位置:   article > 正文

(胎教级)Centos7.x完全断网升级OpenSSL3.x、OpenSSH9.x以及任意版本_升级openssh版本 centos7

升级openssh版本 centos7

Centos7都自带一个OpenSSH7.4p1,算是个祸害。只要这东西没卸载就会被漏扫发现,本教程最后会彻底干掉他

如果安装过程有错误不能解决的可以留言我完善教程,教程是胎教级,所以做到尽量简单,有基础的可以根据自己的理解调整,所以别问为啥不用多线程、动态链接库等问题了。

前置准备

1、openssl-3.x.x.tar.gz

OpenSSL官网
下载页
任选一个即可、本教程选择3.2.1

2、openssh-9.7p1.tar.gz

OpenSSH官网
OpenSSH最新发行版
点击最新版本,进入发行说明书
校验
找到SHA校验,随便点一个文件名链接就能下载源码。

3、perl-5.38.2.tar.gz

Perl官网
Perl下载
找到Unix,下载源码。下载源码不需要登录,直接就能下。

4、zlib.tar.gz

Zlib官网
Zlib官网
点击Zlib最新版本链接,就能直接拿到最新版源码,点这里的链接也行。

编译安装

教程分五步,1:编译安装配置Perl,2:编译安装配置Zlib,3:编译安装配置OpenSSL,4:编译安装配置OpenSSH,5:卸载旧版本、启动新的OpenSSH

1、编译安装配置Perl

如果系统已经有了环境比较齐全的Perl,可以跳过此步骤,如果不知道有没有,或者不知道环境齐不齐全,统一当作没有,不跳过此步骤

我将Perl上传到 /www 目录下,并且改名为 perl.tar.gz
Perl

cd /www
tar -zxvf perl.tar.gz
#cd到解压出来的目录中,解压出来是啥就cd到啥地方,这里解压出来的目录就是perl-5.38.2
cd perl-5.38.2/
  • 1
  • 2
  • 3
  • 4

配置、安装Perl

#配置安装目录为/usr/local/perl,有需要可以自行选择其他目录
./Configure -des -Dprefix=/usr/local/perl
#编译
make
#安装
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如下图,没报错就是装好了
安装完毕
配置环境变量,把刚刚安装完毕的Perl配置到系统变量中

#如果没有nano,也可以用别的,比如vi、vim都可以,反正是个文本,能编辑就随意
nano ~/.bash_profile
  • 1
  • 2

在文件最末尾增加一行

#这里的/usr/local/perl是上面配置的安装目录,如果配置了别的安装目录可以自行修改
#但是后面的/bin是固定的
export PATH=/usr/local/perl/bin:$PATH
  • 1
  • 2
  • 3

保存修改后刷新,让环境变量生效

#刷新环境变量
source ~/.bash_profile
#查看Perl版本
perl -v
  • 1
  • 2
  • 3
  • 4

显示的版本号与自己下载的版本号一致,就算安装配置Perl完成
Perl配置完成

2、编译安装配置Zlib

我把zlib.tar.gz上传到/www
Zlib.tar.gz
开始解压,配置,安装

#解压文件
tar -zxvf zlib.tar.gz
cd zlib-1.3.1/
#配置安装目录,有需要的可以自行更改
./configure --prefix=/usr/local/zlib
#编译
make
#安装
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

安装完毕后,开始配置环境变量

#如果没有nano,也可以用别的,比如vi、vim都可以,反正是个文本,能编辑就随意
nano ~/.bash_profile
  • 1
  • 2

在文件末尾增加以下行

export LD_LIBRARY_PATH=/usr/local/zlib/lib:$LD_LIBRARY_PATH
  • 1

刷新缓存

source ~/.bash_profile
  • 1

运行以下命令后,如果有输出include、lib、share文件夹,就算安装完成了(实际上不算,得编译一下使用zlib头文件的代码才行,这里是基础教程,只要输出了这三个文件夹名称问题就不大)

ls /usr/local/zlib
  • 1

include

3、编译安装配置OpenSSL

我把openssl-3.2.1.tar.gz上传到/www,并且重命名为openssl
上传opelssl
开始解压,配置,安装

#解压文件
tar -zxvf openssl.tar.gz
cd openssl-3.2.1
#配置安装目录,有需要的可以自行更改
./config --prefix=/usr/local/openssl
#编译
make
#安装
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

安装完毕后,开始配置环境变量

#如果没有nano,也可以用别的,比如vi、vim都可以,反正是个文本,能编辑就随意
nano ~/.bash_profile
  • 1
  • 2

在文件末尾增加以下两行,之前升级过1.1版本OpenSSL的在这里就能看出端倪了
LD_LIBRARY_PATH的路径由原本的openssl/lib,变成了openssl/lib64,所以,如何你要安装的是1.1.1.x版本的OpenSSL的话,这里就应该把/openssl/lib64改成/openssl/lib,不然会导致OpenSSH编译不出,就算因为遗留文件编译成功,版本也不对,通过下面的服务也启动不起来

export PATH=/usr/local/openssl/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib64:$LD_LIBRARY_PATH
  • 1
  • 2

增加完毕之后刷新缓存

source ~/.bash_profile
ldconfig
  • 1
  • 2

查看版本正常的话,OpenSSL就算安装完成了

openssl version
  • 1

查看openssl版本

4、编译安装配置OpenSSH

我将openssh-9.7p1.tar.gz上传到/www,并改名为openssh.tar.gz
openssh上传
解压,安装,配置

#解压文件
tar -zxvf openssh.tar.gz
cd openssh-9.7p1
#配置安装目录,OpenSSH安装在/usr/local/openssh,配置文件放在/etc/ssh,指定刚刚安装的OpenSSL目录
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib
#编译
make
#安装
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

安装完成后,设置环境变量

#如果没有nano,也可以用别的,比如vi、vim都可以,反正是个文本,能编辑就随意
nano ~/.bash_profile
  • 1
  • 2

在文件最下面新增一行

export PATH=/usr/local/openssh/bin:$PATH
  • 1

增加完毕后刷新系统变量

source ~/.bash_profile
  • 1

输入查看版本的命令,OpenSSH和OpenSSL的版本对的上自己下载的,就算是安装完成

ssh -V
  • 1

ssh版本

修改OpenSSH的配置文件

新安装的OpenSSH不允许root用户登录,没有x11转发,图形不好用等,需要配置

nano /etc/ssh/sshd_config
  • 1

增加以下行

X11Forwarding yes
X11UseLocalhost no
XAuthLocation /usr/bin/xauth
UseDNS no
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
Subsystem sftp /usr/local/openssh/libexec/sftp-server
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

增加完毕后保存退出即可。

4、启动OpenSSH

由于我们系统自带了一个OpenSSH7.4p1和OpenSSL1.0.2k,OpenSSH比较特殊、所以无论是安没安装新版本,都会被扫到,所以这里我们要卸载掉系统自带的
首先卸载OpenSSH

yum remove openssh
  • 1

再卸载OpenSSL

yum remove openssl
  • 1

检查一下是否卸载干净

rpm -qa | grep openssh
rpm -qa | grep openssl
  • 1
  • 2

不出意外的话,运行rpm -qa | grep openssl的时候,会出现两个包没被卸载掉,有其他软件依赖他,因为是胎教级教程,所以这两个不影响楼栋扫描的包,就不处理了。
接下来就要启动新的OpenSSH,由于我们已经把OpenSSH卸载掉了,所以服务肯定是没了,我们要创建新的服务
我不是很会配这些服务,所以用gpt配了一下,按照上面的教程安装配置的,可以直接复制粘贴以下服务。

#创建一个服务用于启动sshd
nano /etc/systemd/system/sshd.service
  • 1
  • 2

在新创建的service中粘贴以下配置

[Unit]
Description=OpenSSH server daemon
After=network.target

[Service]
ExecStart=/usr/local/openssh/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
Environment="LD_LIBRARY_PATH=/usr/local/openssl/lib64:/usr/local/zlib/lib"
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

粘贴完成之后保存即可,保存完成之后就可以启动了。

#刷新所有service
sudo systemctl daemon-reload
#启动sshd服务
sudo systemctl restart sshd
#查看sshd服务状态
sudo systemctl status sshd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

出现下图就算是启动完成
sshd启动完成

结尾、以及删除、善后等

该教程是OpenSSL3.X的胎教级教程,不适用1.1,并非标准教程,但是完全避免了使得sshd服务停止运行而导致ssh连接断开,去沟通vnc介入,非常麻烦,深有体会。
该教程没有覆盖原本的OpenSSH,而是在其他文件夹自己放了一个,通过系统变量让系统连接,这么做非常干净,没有留下一点污染。
因此,如果未来不用这篇教程里面的东西了,就可以按照以下步骤,完全彻底清理掉本次安装的东西。

1、删除环境变量

nano ~/.bash_profile
  • 1

删除掉底部增加的几行,如果按照教程做的话,底部应该是这几行
删除
删除掉以下几行

export PATH=/usr/local/perl/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/zlib/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/openssl/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/openssh/bin:$PATH
  • 1
  • 2
  • 3
  • 4
  • 5

保存,并执行刷新

source ~/.bash_profile
  • 1

2、删除安装目录

上述教程的软件都安装在/usr/local中,与系统自带的东西不冲突,需要的时候直接删除即可

rm -rf /usr/local/openssl
rm -rf /usr/local/openssh
rm -rf /usr/local/zlib
rm -rf /usr/local/perl
  • 1
  • 2
  • 3
  • 4

3、删除服务和配置

安装openssh之后,我们创建了sshd服务和etc中的配置文件,现在也一并删除

rm -rf /etc/systemd/system/sshd.service
rm -rf /etc/ssh
  • 1
  • 2

到此,就算是删除完成,没留下一点东西,干净得很。
教程到这里也就结束了,胎教级教程,会打命令就能跟着做,若是有报错可以留言解决。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/867638
推荐阅读
相关标签
  

闽ICP备14008679号