事情得先特么从腾讯云的一条漏洞报警开始。。。。。。最近记性不太好,再加上此次参考过的文献太多,有些记不清有哪些参考文献在这次折腾中对我起过作用了,主要有参考文献起作用的还是编译安装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 thefuck
和pip3 install thefuck
,结果直接报错说pip命令有问题,然后我就从官方那里弄来了安装pip的python脚本,并执行python get-pip.py
,结果又报错说python有问题,我便改为执行python3 get-pip.py
,结果报错又来了,说我配置的源不受信任的,而且还不是https的,将直接忽略掉,接着自然就是找不到东西了,我按照提示加了临时强制信任的参数执行按照脚本,执行完了,有个wanning说“脚本pip、pip3、pip3.6已经安装好了,但安装目录不在path里”
然后我就按提示将路径添加到配置文件里面,并重载了配置文件,结果仍然报找不到thefuck,但是经测试pip命令已经可以正常执行了
接着我就顺带去设置了一下源的信任问题,把我用的源设置为信任的源并重装了thefuck,
然后按照教程搭建kms服务器并将其设置为服务然后启动
搭建完成并启动服务之后用自带的测试工具测试了一下,kms服务运行正常
接下来就是去处理防火墙,结果发现防火墙也出问题了。。。。。。
这里看字面意思报错是没有six
这个模块,我就很天真的以为真的只是缺模块,安装就行了,顶多重装一下这个模块应该就可以解决问题,但是实际上在我尝试了pip3 install six
、pip3 uninstall six
、pip3 install six
和pip install six
结果发现都无济于事,尝试用yum安装结果发现yum也报错说无法加载插件,也没有这个包,按照网上说的去下载这个模块的源码回来安装都不行
最后还是在国外的一个网站[4]提到的方法,把six.py
复制到正确的地方之后解决了找不到six
模块的问题,虽说现在防火墙仍无法打开
到了这里我先把yum的问题也顺带给解决一下,按照报错尝试安装缺少的模块
经过试错,找到了正确的模块名并安装了,但在安装的时候报error说还有几个模块找不到或未安装
我就按照提示安装了这些模块,然后执行yum查看发现yum的报错解决了
接着继续修防火墙,经查看详细信息,发现找不到的模块由six
变成另一个了,查阅资料[5],安装缺少的包
安装完之后再次尝试查看防火墙状态,发现没有报错,变成正常的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的版本,经测试,问题解决
但还发现一个奇怪的问题,每次启动shell的时候都会说找不到fuck,似乎是得重新fuck几次并重载环境变量,我就去配置文件里面改了一下里面一些值的先后顺序,经测试,问题彻底解决
现在基本已经把问题都解决了,python的设置和模块缺失的问题、ssh的漏洞修复和连上shell时报的notfound都彻底解决,共耗时约两天
ps:由于“不可抗力”,原定于在9.22发布的文章拖到现在才发布
参考资料:
- CentOS 8 升级 OpenSSH 8.4_ 新技术革命-CSDN博客_centos8升级openssh
- 升级操作系统OpenSSH及其OpenSSL的正确姿势_工程师的技术博客_51CTO博客
- 使用 vlmcsd 搭建 KMS 服务器 – akiyaの博客
- centos – firewall-cmd (ModuleNotFoundError: No module named ‘six’) – Unix & Linux Stack Exchange
- CentOS 8 pip3安装包后firewalld防火墙启动失败 | 一只小桃桃
- 关于centos7防火墙错误-ImportError: No module named gi.repository_zan110120的博客-CSDN博客
- CentOS8的基础防火墙firewalld配置_A___LEi的博客-CSDN博客_centos8 firewalld
感谢博主,解决这个问题后以后遇到相同的问题就有思路了。
CentOS 目前預設的 Python 版本還是 2,系統的很多組件使用的也是 Python 2,你的作業系統環境下全是 Python 3.6,可以說不出問題才是奇怪的事情吧……
centos7用的是用户安装软件路径里的python2,centos8用的是专门的平台python