(胎教级)Centos7.x完全断网升级OpenSSL3.x、OpenSSH9.x以及任意版本
败犬五月哭 2024-07-30 12:37:03 阅读 53
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
<code>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配置到系统变量中
<code>#如果没有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
开始解压,配置,安装
<code>#解压文件
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
开始解压,配置,安装
<code>#解压文件
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
解压,安装,配置
<code>#解压文件
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转发,图形不好用等,需要配置
<code>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"code>
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、删除环境变量
删除掉底部增加的几行,如果按照教程做的话,底部应该是这几行
删除掉以下几行
<code>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
到此,就算是删除完成,没留下一点东西,干净得很。
教程到这里也就结束了,胎教级教程,会打命令就能跟着做,若是有报错可以留言解决。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。