首页 > 其他分享 >记录兼职运维的一天

记录兼职运维的一天

时间:2024-08-12 17:16:24浏览次数:12  
标签:opt upgrade 运维 记录 -- openssh openssl ssh 兼职

1.背景

7月底部门的运维大哥离职了,奈何又没有新运维接替,至于为什么没有补位,懂得都懂,按老大的意思是先让开发一人顶一块,8月底争取补上。

打心底我有点排斥这事,但是人到中年又有什么办法呢,上有老下有小,唯有苟。

分派给我的部分是服务器漏洞的修复,小弟虽然懂几个linux命令但是在“漏洞修复”这个词面前还是有点苍白,只能祈祷这个月没有工单过来了,但是怕什么来什么,第二天就来了一个工单,大概看下是什么内容。

 

 

 

2.补充点知识

大概看了一下有两类漏洞需要处理,分别是:

1.openssh 版本过低;

2.MySql版本过低。

这几台机器的操作系统是Centos 7.9,网上搜了一下对于Centos系统的软件升级大概有以下几种:

方法一   手动编译安装法:此方法仅仅针对源码包进行安装,该方法需要借助的工具gcc以及gcc_c++工具,在安装的时候一定要先安装好这两个工具才可以进行下一步安装。

           步骤一:获得软件包以后,将软件包解压。解压步骤要看具体压缩的是什么格式,根据格式应用对应的解压工具进行解压。

           步骤二:cd到软件包内的bin目录下。

           步骤三:执行编译命令:make,该步骤的目的是将源文件编译成为二进制文件,以便下一步安装。

           步骤四:执行安装命令:make install。安装软件操作。如果想安装到 tool目录下,可以执行:make install /tool/

           编译法的优点就是利于找到文件夹以及源文件,方便与后期的卸载。缺点当该软件包需要依赖包的时候需要解决依赖包的问题才可以装上软件,相对比较麻烦。

 方法二  RPM安装方式:找到软件的RPM包的时候,执行rpm -ivh xxx.rpm,即可安装软件。rpm包只是将源码包打压成为了rpm文件格式,使用rpm工具进行安装。安装的时候同样会收到依赖包以及系统环境的影响。

           和手动编译安装法相比,rpm的优势在于升级和卸载。如果有更高级的kk.rpm包时,执行命令:rpm -uvh kk.rpm 即可升级软件,不像编译法先卸载再安装。卸载软件rpm -e kk.rpm,即可卸载。

 方法三  yum源安装方法:该方法需要借助到网络,访问到yum源才可以进行安装。如果是需要访问互联网上的yum源,则需要链接互联可以使用此方法进行访问。很多企业为了本地运行环境的安全性来考虑,一般禁止链接互联网。

           以通过yum源安装mysql为例:执行命令 yum install -y mysql  即可通过yum方式进行安装。通过yum 方式卸载 ,命令:yum remove mysql,即可卸载mysql。

           用该方法安装软件,yum源很重要,可以自己配置一个yum源,也可以使用互联网上面的yum源。推荐使用互联网上面的开源yum源,如果自己搭建yum源,其中的工具包比较难以收集全。

            更改或者设置yum源在文件yum.repo文件中进行更改。

https://forum.huawei.com/enterprise/zh/thread/580933440356892672

个人感觉后两种最简单,相当于别人已经制作好了软件包只需要自己安装一下就好,但悲催的是找不到openssh最新版本的包,只能硬着头皮尝试自己通过源码编译,相比而言Mysql就舒服一点,官方有现成的包。 

3.升级openssh

对于一个新手来说,开始之前总会先找一系列补救措施,以备不时之需,下面是我搜集的一些免死金牌。

3.1 开启telnet

有网友说先把telnet打开,以防openssh升级失败导致机器失联(当然也可以硬着头皮去找虚拟机管理员,控制台终归是能进去的)。

yum install -y telnet* xinetd
vim /etc/pam.d/remote
#注释掉auth required pam_securetty.so这一行
systemctl start xinetd.service
systemctl start telnet.socket
systemctl enable telnet.socke

3.2 虚拟机快照

虚拟机一般都提供了快照功能,简单理解为备份和还原功能,系统被搞坏了以后可以快速恢复。

3.3 提前模拟

毕竟是新手,对着客户环境直接开大太冒失,不妨找台内网的测试机器或者自己安装虚拟机模拟一下,做到心中有数。

3.4 开始编译

逐个下载源码包,openssh依赖zlib和openssl,编译openssh之前需要先把zlib和openssl编译。

#统一在/opt/ssh-upgrade/source/ 目录操作
#openssh 下载&解压
wget 'http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz'
tar zxvf openssh-9.8p1.tar.gz
#openssl 下载&解压
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
tar zxvf openssl-1.1.1w.tar.gz
#zlib下载&解压
wget https://zlib.net/fossils/zlib-1.3.1.tar.gz
tar zxvf zlib-1.3.1.tar.gz
#编译zlib
cd /opt/ssh-upgrade/source/zlib-1.3.1

configure可能会出现的错误
Checking for gcc...
Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).
** ./configure aborting.

这时需要安装软件
yum install -y gcc gcc-c++


./configure --prefix=/opt/ssh-upgrade/zlib
make && make install
#编译openssl
#备份配置
cp -rf /etc/ssl/ /opt/ssh-upgrade/config_bak/ssl

cd /opt/ssh-upgrade/source/openssl-1.1.1w

 ./config --prefix=/opt/ssh-upgrade/openssl/ --openssldir=/opt/ssh-upgrade/openssl/ shared
make && make install

ln -sf /opt/ssh-upgrade/openssl/bin/openssl /usr/bin/openssl
ln -sf /opt/ssh-upgrade/openssl/include/openssl /usr/include/openssl
echo '/opt/ssh-upgrade/openssl/lib' >> /etc/ld.so.conf.d/ssh-upgrade.conf
ldconfig
#编译openssh
#备份配置
cp -rf /etc/ssh/ /opt/ssh-upgrade/config_bak/ssh

cd /opt/ssh-upgrade/source/openssh-9.8p1
./configure --prefix=/opt/ssh-upgrade/openssh/ --sysconfdir=/opt/ssh-upgrade/openssh/ssh/ --with-openssl-includes=/opt/ssh-upgrade/openssl/include/ --with-ssl-dir=/opt/ssh-upgrade/openssl/ --with-zlib=/opt/ssh-upgrade/zlib/ --with-md5-passwords --without-openssl-header-check
make && make install
ln -sf /opt/ssh-upgrade/openssh/sbin/sshd /usr/sbin/sshd
ln -sf /opt/ssh-upgrade/openssh/bin/ssh /usr/bin/ssh
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-add /usr/bin/ssh-add
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-agent /usr/bin/ssh-agent
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
#还原配置
cp -rf /opt/ssh-upgrade/config_bak/ssh /etc/ssh/
# 加入开机启动之类的
chkconfig --add sshd
chkconfig sshd on
systemctl enable sshd.socket
systemctl restart sshd
systemctl status sshd

不出意外的话意外就发生了,网络闪断了一下,然后这台机器连不上了,因为是用内网的测试机器练手,所以即没开telnet也没找管理员做快照,只能硬着头皮找管理员用控制台进入机器看看啥情况,管理员猜测是ssh服务没有成功启动导致,但是通过systemctl status sshd发现服务没有问题,那大概率就是配置问题了,网上说的比较多的是/etc/ssh/sshd_config中的PermitRootLogin yes没有打开导致,但是查看配置也没有问题,内心深处有一个声音若隐若现“重启一把看看”,然并卵。  

3.5 复盘

冷静下来之后,我逐条检查之前执行过的命令,其中有一个细节引起了我的怀疑,一起来看下。

./configure --prefix=/opt/ssh-upgrade/openssh/ --sysconfdir=/opt/ssh-upgrade/openssh/ssh/ --with-openssl-includes=/opt/ssh-upgrade/openssl/include/ --with-ssl-dir=/opt/ssh-upgrade/openssl/ --with-zlib=/opt/ssh-upgrade/zlib/ --with-md5-passwords --without-openssl-header-check

--sysconfdir=/opt/ssh-upgrade/openssh/ssh/,这个参数指定了配置文件的位置为/opt/ssh-upgrade/openssh/ssh/,所以我将最开始备份的配置文件恢复回/etc/ssh/自然是没用,那解决方案也就很简单了,将/opt/ssh-upgrade/openssh/ssh/sshd_config中的PermitRootLogin yes打开即可。

网上找的资料一定要弄懂,不要稀里糊涂的执行。

4.升级MySql

MySql的升级相对来说就简单一点了,有现成的软件包,下载了执行就好。

4.1 下载5.7.44的安装包

https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar

4.2 备份

配置文件和数据

cp /etc/my.cnf /data/back/my.cnf_0807

mysqldump -uroot -p'xxx' --all-databases>/data/back/sqlfiles_0807.sql

4.3 停止数据库

systemctl stop mysqld

4.4 使用Uvh升级  

rpm -Uvh mysql-community-common-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-libs-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-devel-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-client-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-server-5.7.44-1.el7.x86_64.rpm --nodeps

4.5 启动mysqld

service mysqld restart

 

4.6 检查更新

mysql_upgrade -uroot -p

参考https://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html

4.7 重启mysql

systemctl restart mysqld

 

5.写在最后

本来挺多感慨和负面情绪想抒发一下的,但是真正把事情做完的时候好像又是一种“不以物喜,不以己悲”的心态,老了?怂了?和自己和解了?
人到中年,懂得都懂!  

 

  

  

  

  

 

  

 

标签:opt,upgrade,运维,记录,--,openssh,openssl,ssh,兼职
From: https://www.cnblogs.com/chopper-poet/p/18355383

相关文章

  • kubernetes记录一起因为磁盘容量不足造成pod无线驱逐pod状态为Evicted
    线上的pod遭到无线的驱逐fxxx-xxxx-deploy-86684b76ff-2vkdx0/1Evicted030m<none>10.10.10.10<none><none>fxxx-xxxx-deploy-86684b76ff-5j6fd0/1Evicted030m<none&......
  • 2024 年了,IT 运维监控系统都有哪些推荐?
    大浪淘沙,2024年的今天,市面上很多监控系统慢慢淡出了大家的视野,而一些新的监控系统也逐渐崭露头角。今天我们就来看看2024年的当下,哪些IT运维监控系统最值得关注。Prometheus毫无疑问,Prometheus是最值得关注的监控系统,因为Prometheus的规范和生态都非常厉害,很多中间件、......
  • 基于SpringBoot+MySQL+SSM+Vue.js的大学生兼职系统(附论文)
    获取见最下方名片信息获取见最下方名片信息获取见最下方名片信息演示视频基于SpringBoot+MySQL+SSM+Vue.js的大学生兼职系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+Spr......
  • node项目log4js进行日志记录
    node项目log4js进行日志记录超人鸭关注IP属地:广东0.1072022.09.0818:25:04字数1,973阅读827安装与了解npminstalllog4js--save目前的版本是:6.6.1在终端打印消息:importlog4jsfrom'log4js'constlogger=log4js.getLogger()logger.level='all'lo......
  • 算法力扣刷题记录 七十七【63. 不同路径 II】
    前言动态规划第6篇。记录七十七【63.不同路径II】一、题目阅读一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那......
  • EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2) 补题记录(A~D1,E)
    A容易发现答案为\(\min(n,k)\min(m,k)\)。#include<bits/stdc++.h>#defineintlonglong#definepbpush_backusingnamespacestd;constintN=1000100;inta[N];signedmain(){intT;cin>>T;while(T--){intn,m,k;cin>>n&g......
  • 记录JSch连接SFTP Exception:Algorithm negotiation fail问题解决
    问题描述:关于正式环境访问外网连接不成功 1、首先检查是否开放防火墙(已确认开放),策略开放后,通过命令连接是否畅通: 通过telnet命令,可以得出,访问畅通。telnet192.168.1.122 2、查看生产环境日志,观察生产环境访问外网服务器异常:抛出异常,提示:算法协商失败com.jcraft.j......
  • 记录:5款爆款标题
    偶然看到一篇文章,也不知道谁写的,感觉不错,记录下来。5款爆款标题公式:问题求助类型婆媳关系类型男女关系类型解决问题类型干货类型求选择抛出多个选项让大家帮你做选择最常用的写法“求助大家,二线城市是先买车还是先买房”“求助,帮忙选一下哪件婚纱更好看”“求助,选......
  • 微信小程序学习记录
    一、为什么要写这篇文章来公司已经1个半月了,虽然应聘的是嵌入式软件工程师,但是由于在实习期,公司也不太清楚具体给我一些什么任务,在完成第一项“bootloader错误注入”测试的任务之后,又给我增派了基于已有蓝牙小程序来进行修改的任务。没办法,学吧!!反正自己也有想要学习小程序开发的......
  • STM32学习记录(九):RTC
    RTC框图实时时钟(Real-timeclock:RTC)是一个独立的计时器。RTC提供一组连续运行的计数器,可以与合适的软件一起使用,以提供时钟日历功能。可以写入计数器值以设置系统的当前时间/日期。可以选择以下三种作为RTC时钟源:HSE时钟进行128分频LSE振荡器时钟LSI振荡器时钟有关时......