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

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

前置准备

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

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

2、openssh-9.7p1.tar.gz

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

3、perl-5.38.2.tar.gz

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

4、zlib.tar.gz

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

编译安装

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

1、编译安装配置Perl

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

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

cd /www

tar -zxvf perl.tar.gz

#cd到解压出来的目录中,解压出来是啥就cd到啥地方,这里解压出来的目录就是perl-5.38.2

cd perl-5.38.2/

配置、安装Perl

#配置安装目录为/usr/local/perl,有需要可以自行选择其他目录

./Configure -des -Dprefix=/usr/local/perl

#编译

make

#安装

make install

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

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

nano ~/.bash_profile

在文件最末尾增加一行

#这里的/usr/local/perl是上面配置的安装目录,如果配置了别的安装目录可以自行修改

#但是后面的/bin是固定的

export PATH=/usr/local/perl/bin:$PATH

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

#刷新环境变量

source ~/.bash_profile

#查看Perl版本

perl -v

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

2、编译安装配置Zlib

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

#解压文件

tar -zxvf zlib.tar.gz

cd zlib-1.3.1/

#配置安装目录,有需要的可以自行更改

./configure --prefix=/usr/local/zlib

#编译

make

#安装

make install

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

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

nano ~/.bash_profile

在文件末尾增加以下行

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

刷新缓存

source ~/.bash_profile

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

ls /usr/local/zlib

3、编译安装配置OpenSSL

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

#解压文件

tar -zxvf openssl.tar.gz

cd openssl-3.2.1

#配置安装目录,有需要的可以自行更改

./config --prefix=/usr/local/openssl

#编译

make

#安装

make install

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

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

nano ~/.bash_profile

在文件末尾增加以下两行,之前升级过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

增加完毕之后刷新缓存

source ~/.bash_profile

ldconfig

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

openssl version

4、编译安装配置OpenSSH

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

#解压文件

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

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

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

nano ~/.bash_profile

在文件最下面新增一行

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

增加完毕后刷新系统变量

source ~/.bash_profile

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

ssh -V

修改OpenSSH的配置文件

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

nano /etc/ssh/sshd_config

增加以下行

X11Forwarding yes

X11UseLocalhost no

XAuthLocation /usr/bin/xauth

UseDNS no

PermitRootLogin yes

PubkeyAuthentication yes

PasswordAuthentication yes

Subsystem sftp /usr/local/openssh/libexec/sftp-server

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

4、启动OpenSSH

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

yum remove openssh

再卸载OpenSSL

yum remove openssl

检查一下是否卸载干净

rpm -qa | grep openssh

rpm -qa | grep openssl

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

#创建一个服务用于启动sshd

nano /etc/systemd/system/sshd.service

在新创建的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

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

#刷新所有service

sudo systemctl daemon-reload

#启动sshd服务

sudo systemctl restart sshd

#查看sshd服务状态

sudo systemctl status sshd

出现下图就算是启动完成

结尾、以及删除、善后等

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

1、删除环境变量

nano ~/.bash_profile

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

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

保存,并执行刷新

source ~/.bash_profile

2、删除安装目录

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

rm -rf /usr/local/openssl

rm -rf /usr/local/openssh

rm -rf /usr/local/zlib

rm -rf /usr/local/perl

3、删除服务和配置

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

rm -rf /etc/systemd/system/sshd.service

rm -rf /etc/ssh

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

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。