如何解决启动或执行SSH命令报错:error while loading shared libraries: libcrypto.so.10 的问题

计算操作系统技术服务知识库
运行环境
  • CentOS 8
  • CentOS 7
问题描述

重启ssh服务或者执行ssh命令时候报错

error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory`

解决方案

查看相关库文件的信息

  1. 登录正常服务器,执行如下命令,查看libcrypto.so.10库文件的信息。
ll /usr/lib64/libcrypto.so.10

系统显示类似如下,libcrypto.so.10库文件是libcrypto.so.1.0.2k库文件的软连接。

lrwxrwxrwx. 1 root root 19 Jun 21  2021 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k
  1. 执行如下命令,查看libcrypto.so.1.0.2k库文件的信息。
ll /usr/lib64/libcrypto.so.1.0.2k

系统显示类似如下。

-rwxr-xr-x. 1 root root 2521144 Aug  9  2019 /usr/lib64/libcrypto.so.1.0.2k

恢复文件

本地文件未删除

  1. 通过VNC登录实例,查看库文件是否被移动或者软链接被篡改
  2. 执行如下命令,查找libcrypto.so.1.0.2k库文件。
find / -name libcrypto.so.1.0.2k

  1. 执行如下命令,将找到的文件拷贝到正常目录。
cp [$File] /usr/lib64/libcrypto.so.1.0.2k

[$File]为上一步找到的libcrypto.so.1.0.2k库文件绝对路径。

  1. 依次执行如下命令,修改文件权限、所有者和所属组。
chmod 755 /usr/lib64/libcrypto.so.1.0.2k
chown root:root /usr/lib64/libcrypto.so.1.0.2k

  1. 执行如下命令,创建软链接。
ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10

  1. 执行如下命令,启动SSH服务。

systemctl restart sshd 

本地文件被删除

如果通过find命令未能在系统内部找到libcrypto.so.1.0.2k库文件,而系统内部FTP服务运行正常,则可以通过创建一台系统版本一致且能访问库文件缺失的的ECS,通过ftp将缺失的库文件上传到实例中。

  1. 通过FTP软件将其它正常服务器上的libcrypto.so.1.0.2k库文件上传到目标服务器的/tmp目录。

上传到目标服务器目录以实际环境为准,本文以/tmp目录为例。

  1. 执行如下命令,将文件拷贝到正常目录。
cp /tmp/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k

  1. 依次执行如下命令,修改文件权限、所有者和所属组。
chmod 755 /usr/lib64/libcrypto.so.1.0.2k
chown root:root /usr/lib64/libcrypto.so.1.0.2k

  1. 执行如下命令,创建软链接。
ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10

  1. 执行如下命令,启动SSH服务。

systemctl restart sshd 
问题分析

OpenSSL 加密库 (libcrypto)实现了广泛用于各种 Internet 标准的加密算法。该库提供的服务被 TLS 和 CMS 的 OpenSSL 实现所使用,它们也被用于实现许多其他第三方产品和协议,SSH服务的运行也依赖此库文件。通常此类问题是由于相关库文件异常所致,即文件丢失或权限配置异常等。 如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论