修复我备用服务器上因试图更新ssh而被整的一团糟的python环境以及防火墙

事情得先特么从腾讯云的一条漏洞报警开始。。。。。。最近记性不太好,再加上此次参考过的文献太多,有些记不清有哪些参考文献在这次折腾中对我起过作用了,主要有参考文献起作用的还是编译安装ssh部分,但我现在没有存到当时的截图。另外,此篇文章与之前的一样,仅作记录,仅供参考,请勿盲目照搬文章中的操作,否则产生的一切后果自负。

早在上个月,腾讯云给我发了一条短信,说我的主机有一个系统组件漏洞,当时我没空理,就把它丢在那,直到前天(19号)我不那么忙了,便想起来去处理这个问题

腾讯云的短信
腾讯云的短信

然后我先是执行了yum update命令,升级了一批软件,然后去腾讯云那边检测,发现漏洞还在,于是我就上网找教程[1],编译安装了新的openssh,过程还算顺利,很快就完成了,去腾讯云那边检测也没提示有漏洞了,我就以为事情就这样算是结束了。对了,此处有必要说明:openssh依赖openssl,如果openssl版本不满足新版openssh的话请参考这篇教程[2],一开始我在给我主服务器折腾的时候就是参考的这篇,但是编译openssl的时候要把命令中的“--with-fipsdir=/opt/fips-2.0.16”删掉,因为新版已经没有这个参数了。

腾讯云漏洞警告截图
腾讯云的漏洞警告

后来我登上服务器想按照教程[3]搭建kms服务器的时候,刚用ssh连上服务器就开幕雷击——一行报错映入眼帘:-bash: thefuck: command not found,我以为这只是重装一下thefuck就能解决的问题,就执行了pip3 uninstall thefuckpip3 install thefuck,结果直接报错说pip命令有问题,然后我就从官方那里弄来了安装pip的python脚本,并执行python get-pip.py,结果又报错说python有问题,我便改为执行python3 get-pip.py,结果报错又来了,说我配置的源不受信任的,而且还不是https的,将直接忽略掉,接着自然就是找不到东西了,我按照提示加了临时强制信任的参数执行按照脚本,执行完了,有个wanning说“脚本pip、pip3、pip3.6已经安装好了,但安装目录不在path里”

安装pip时的报错
安装pip时的报错

然后我就按提示将路径添加到配置文件里面,并重载了配置文件,结果仍然报找不到thefuck,但是经测试pip命令已经可以正常执行了

重载配置文件后仍找不到”thefuck“
重载配置文件后仍找不到”thefuck“

接着我就顺带去设置了一下源的信任问题,把我用的源设置为信任的源并重装了thefuck,

设置源的信任
设置源的信任
重新安装thefuck
重新安装thefuck

然后按照教程搭建kms服务器并将其设置为服务然后启动

搭建kms服务器
搭建kms服务器

搭建完成并启动服务之后用自带的测试工具测试了一下,kms服务运行正常

查看防火墙状态时的报错
处理防火墙结果发现防火墙出问题了

接下来就是去处理防火墙,结果发现防火墙也出问题了。。。。。。

提示找不到six模块
提示找不到”six“模块

这里看字面意思报错是没有six这个模块,我就很天真的以为真的只是缺模块,安装就行了,顶多重装一下这个模块应该就可以解决问题,但是实际上在我尝试了pip3 install sixpip3 uninstall sixpip3 install sixpip install six结果发现都无济于事,尝试用yum安装结果发现yum也报错说无法加载插件,也没有这个包,按照网上说的去下载这个模块的源码回来安装都不行

各种尝试安装six模块结果均无效
各种尝试安装six模块结果均无效

最后还是在国外的一个网站[4]提到的方法,把six.py复制到正确的地方之后解决了找不到six模块的问题,虽说现在防火墙仍无法打开

防火墙仍无法启动
防火墙仍无法启动

到了这里我先把yum的问题也顺带给解决一下,按照报错尝试安装缺少的模块

yum也有报错
yum也有报错

经过试错,找到了正确的模块名并安装了,但在安装的时候报error说还有几个模块找不到或未安装

不断摸索,终于找到了正确的模块名
不断摸索,终于找到了正确的模块名

我就按照提示安装了这些模块,然后执行yum查看发现yum的报错解决了

成功解决yum的报错问题
成功解决yum的报错问题

接着继续修防火墙,经查看详细信息,发现找不到的模块由six变成另一个了,查阅资料[5],安装缺少的包

新的报错
报错由原来的找不到six变成别的了

安装完之后再次尝试查看防火墙状态,发现没有报错,变成正常的not running状态,也就是说变成了可以启动的状态了

终于把防火墙修好了

此处插播来自我主服务器的一点小插曲

登录主服务器时的提示
登录主服务器时的提示

今天突然想登录主服务器看一下,结果刚登上去就收到提示:“There were 1191 failed login attempts since the last successful login.”,翻译过来就是“自上次成功登录以来,有 1191 次失败的登录尝试。”,我当时就一脸懵逼,我这服务器到底经历了什么。。。

登录备用服务器时的提示
登录备用服务器时的提示

相比较之下,我的备用服务器就安静很多。。。。。。于是我决定把我主服务器上之前关掉的防火墙重新打开,在宝塔上面打开的时候提示成功,然后一刷新又显示关闭,接着我就来ssh这边查看一下什么情况,从报错来看,是缺少firewall.client这个模块,然后我就直接执行pip install firewall.client结果找不到包,上网搜索得知是缺少python-firewall,便改为执行pip install python-firewall,显示成功安装

主服务器的防火墙也无法启动
是的,没错,主服务器的防火墙也炸了

但是从图上看,并没有凑效,上网搜索得知应该是要通过yum安装[6]而不是用pip安装。。。。。。就离谱,一个python模块用pip安装了还不行,还要用yum安装。。。不过这个方法的确有用,在我执行yum install python-firewall之后问题就解决了。。。。。。

尝试修复主服务器的防火墙
不过主服务器的防火墙修起来还算简单

然后就按照教程[7]尝试启动防火墙(其实前面查看防火墙详细信息的命令也是按照此教程来的),成功启动

启动
在备用服上面启动防火墙
查看防火墙状态
查看防火墙状态

搞定防火墙之后再来收拾这个找不到python的错误,按照提示,是python已安装,但应该是设置问题

修复找不到python问题
修复找不到python的问题

于是便设置了一下全局python的版本,经测试,问题解决

设置全局python版本
设置全局python版本

但还发现一个奇怪的问题,每次启动shell的时候都会说找不到fuck,似乎是得重新fuck几次并重载环境变量,我就去配置文件里面改了一下里面一些值的先后顺序,经测试,问题彻底解决

调整环境变量中不同路径的位置
调整环境变量中不同路径的位置

现在基本已经把问题都解决了,python的设置和模块缺失的问题、ssh的漏洞修复和连上shell时报的notfound都彻底解决,共耗时约两天

ps:由于“不可抗力”,原定于在9.22发布的文章拖到现在才发布表情包

参考资料:

  1. CentOS 8 升级 OpenSSH 8.4_ 新技术革命-CSDN博客_centos8升级openssh
  2. 升级操作系统OpenSSH及其OpenSSL的正确姿势_工程师的技术博客_51CTO博客
  3. 使用 vlmcsd 搭建 KMS 服务器 - akiyaの博客
  4. centos - firewall-cmd (ModuleNotFoundError: No module named 'six') - Unix & Linux Stack Exchange
  5. CentOS 8 pip3安装包后firewalld防火墙启动失败 | 一只小桃桃
  6. 关于centos7防火墙错误-ImportError: No module named gi.repository_zan110120的博客-CSDN博客
  7. CentOS8的基础防火墙firewalld配置_A___LEi的博客-CSDN博客_centos8 firewalld
点赞
  1. 櫻川 浅羽说道:
    CentOS 目前預設的 Python 版本還是 2,系統的很多組件使用的也是 Python 2,你的作業系統環境下全是 Python 3.6,可以說不出問題才是奇怪的事情吧……
    1. 叶子说道:
      Google Chrome Windows 10
      centos7用的是用户安装软件路径里的python2,centos8用的是专门的平台python

发表评论

电子邮件地址不会被公开。必填项已用 * 标注