前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当你在腾讯云遇到 /lib64/libcrypto.so.10...short该怎么办

当你在腾讯云遇到 /lib64/libcrypto.so.10...short该怎么办

原创
作者头像
Mr.JC
修改2020-03-24 10:11:05
5.9K1
修改2020-03-24 10:11:05
举报
文章被收录于专栏:Mr.JC聊聊云计算Mr.JC聊聊云计算

今天某开发人员找到我说,腾讯云某某某跳板机远程连接不上啦,赶紧给看看.....影响项目进度啦

好家伙,又把服务器搞挂了,ping ,telnet....先招呼一通,果然22端口挂掉了。。。检查了下安全组没啥问题

问题机器系统CentOS7.6,通过腾讯云VNC后台登录上去服务器,这里说明下原理,VNC相当于通过console方式连接到云主机,不依赖于网络。当咱们云服务被各种“不可抗力”因素导致网络不通或者sshd挂掉的情况下可以通过VNC的方法进行登录。

腾讯云主机VNC登录入口
腾讯云主机VNC登录入口
代码语言:javascript
复制
首先netstat -anltp|grep 22看看端口情况,emmm...空白一片。

接下来咱们重启下sshd服务:

代码语言:javascript
复制
systemctl restart sshd.service

果然没有那么简单哈,报错了,咱们查看一下sshd状态看看具体是啥报错

代码语言:javascript
复制
systemctl status sshd.service
查看sshd状态
查看sshd状态

以上一堆东西比较有用的是这一句:

error while loading shared libraries: /lib64/libcryto.so.10: .... short

什么意思呢?意思是哎呀,sshd服务重启失败了,原因是载入库文件时失败,太短了。。。短。说白了,损坏了

OK ,咱们接着看

代码语言:javascript
复制
ls -l /lib64/libcrypto.so

/lib64/libcrypto.so库文件
/lib64/libcrypto.so库文件

原来是做了软链接到了/lib64/libcrypto.so.1.0.2k下

代码语言:javascript
复制
 ls -l libcrypto.so.1.0.2k
libcrypto.so.1.0.2k损坏
libcrypto.so.1.0.2k损坏

果然,libcrypto.so.1.0.2k损坏了,咱们找个健康的机器看看正常的文件有多大.

正常libcrypto.so.1.0.2k大小是2.5M
正常libcrypto.so.1.0.2k大小是2.5M

诊断完毕:/lib64/libcrypto.so.1.0.2k文件损坏

修复此文件有2种方法:

1、使用CentOS 7.6系统镜像进行修复

2、从健康机器上直接复制过去修复

但是这里是腾讯云,第一种方法行不通,且费时费力,面对项目进度压力果断选择第二种方法;

但是问题又来了,咱们应该怎么复制呢?作为一个传统运维,首先想到的肯定是scp,ftp.....各种文件传输方法,再不行就搭个web服务器wget / curl下载下来,还有牛逼的开发运维直接就python搭建简易文件服务器。但是很遗憾,/lib64/libcrypto.so.1.0.2k->/lib64/libcryto.so.10在系统内地位非常搞,咱们常用的工具都依赖于这个文件,这就导致咱们目前能想到的命令都被封死了,包括yum命令。且腾讯云VNC后台智能执行命令输入输出,无法进行文件传输,这可怎么办呢?

咱们修复归修复,总不能影响开发人员工作,先把这台跳板机的公网ip转移到另外的服务器先让开发用起来:

代码语言:javascript
复制
登录到腾讯云CVM控制台 -> 找到相应的服务器 -> 公网ip -> 转为弹性公网ip -> 转到弹性公网ip控制台找到该公网ip
-> 解绑 ->绑定到该集群下另外一台服务器充当临时跳板机

公网ip转换为弹性公网ip
公网ip转换为弹性公网ip

传统的办法不行,咱们就发挥脑洞,创建一块云硬盘。

创建云硬盘
创建云硬盘
挂载云硬盘
挂载云硬盘

云硬盘目前是白菜价,按量计费一小时才1分钱,容量无所谓嘛,反正咱们文件只有2.5MB,硬盘名随意填就好啦,提交创建。

创建好后咱们把该云硬盘挂载到另外一台健康的CentOS 7.6的云主机上,挂载好后咱们通过ssh 或者VNC的方式连接上去

代码语言:javascript
复制
 fdisk -l

看一下新挂载的硬盘分区是什么分区路径

fdisk -l查看分区信息
fdisk -l查看分区信息

格式化化分区:(注意下面的命令千万不要写错了,写成vda你就凉凉了)

代码语言:javascript
复制
mkfs.ext4 /dev/vdb

格式化分区为ext4
格式化分区为ext4

创建一个临时路径

代码语言:javascript
复制
mkdir -p /mnt/tmp

挂载硬盘到该临时路径

代码语言:javascript
复制
mount /dev/vdb /mnt/tmp

复制健康的libcrypto.so.1.0.2k到云硬盘

代码语言:javascript
复制
cp /lib64/libcrypto.so.1.0.2k /mnt/tmp

ls -l /mnt/tmp检查一下,确保libcrypto.so.1.0.2k大小是2.5M无误

OK,万事俱备,只欠东风,咱们把云硬盘解挂载后再挂载到问题机器上

代码语言:javascript
复制
umount /mnt/tmp

然后到腾讯云硬盘控制台进行解挂载

卸载云硬盘
卸载云硬盘

然后重新挂载到问题机器上,重复刚刚挂载的动作:

代码语言:javascript
复制
mkdir -p /mnt/tmp 
mount /dev/vdb /mnt/tmp

接下来咱们进行文件恢复:

代码语言:javascript
复制
cp /mnt/tmp/libcrypto.so.1.0.2k /lib64

检查一下:

代码语言:javascript
复制
ls -lh /lib64/libcrypto.so.1.0.2k

/lib64/libcrypto.so.1.0.2k
/lib64/libcrypto.so.1.0.2k

OK,确认没问题了,咱们重启sshd

代码语言:javascript
复制
systemctl restart sshd.service

重启sshd
重启sshd

ssh连接没问题了,netstat 观察端口22也起来了,完美修复。解挂载和释放掉刚刚的临时云硬盘,修复成本0.01元(手快网络好的同学可以做到0元)。把弹性公网ip切换回这台机器丢回去给研发狠狠骂一顿,收工。。

啰啰嗦嗦说了这么多,其实想传达给大家一个思路,在云上当传统运维工具scp ,ftp, web server甚至yum命令都失效的情况下,咱们可以通过云硬盘的方式来往虚拟机传输文件,以完成修复工作。

最后,感谢大家观看,我是你们的朋友Mr.JC,咱们下回见~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • error while loading shared libraries: /lib64/libcryto.so.10: .... short
  • 诊断完毕:/lib64/libcrypto.so.1.0.2k文件损坏
  • 传统的办法不行,咱们就发挥脑洞,创建一块云硬盘。
  • 格式化化分区:(注意下面的命令千万不要写错了,写成vda你就凉凉了)
  • 创建一个临时路径
  • 挂载硬盘到该临时路径
  • 复制健康的libcrypto.so.1.0.2k到云硬盘
  • ls -l /mnt/tmp检查一下,确保libcrypto.so.1.0.2k大小是2.5M无误
  • 然后重新挂载到问题机器上,重复刚刚挂载的动作:
  • 接下来咱们进行文件恢复:
  • 检查一下:
  • ssh连接没问题了,netstat 观察端口22也起来了,完美修复。解挂载和释放掉刚刚的临时云硬盘,修复成本0.01元(手快网络好的同学可以做到0元)。把弹性公网ip切换回这台机器丢回去给研发狠狠骂一顿,收工。。
相关产品与服务
云硬盘
云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档