运行环境
- CentOS 8
- CentOS 7
问题描述
重启ssh服务或者执行ssh命令时候报错
error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory`
解决方案
查看相关库文件的信息
- 登录正常服务器,执行如下命令,查看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
- 执行如下命令,查看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
恢复文件
本地文件未删除
- 通过VNC登录实例,查看库文件是否被移动或者软链接被篡改
- 执行如下命令,查找libcrypto.so.1.0.2k库文件。
find / -name libcrypto.so.1.0.2k
- 执行如下命令,将找到的文件拷贝到正常目录。
cp [$File] /usr/lib64/libcrypto.so.1.0.2k
[$File]为上一步找到的libcrypto.so.1.0.2k库文件绝对路径。
- 依次执行如下命令,修改文件权限、所有者和所属组。
chmod 755 /usr/lib64/libcrypto.so.1.0.2k
chown root:root /usr/lib64/libcrypto.so.1.0.2k
- 执行如下命令,创建软链接。
ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10
- 执行如下命令,启动SSH服务。
systemctl restart sshd
本地文件被删除
如果通过find
命令未能在系统内部找到libcrypto.so.1.0.2k库文件,而系统内部FTP服务运行正常,则可以通过创建一台系统版本一致且能访问库文件缺失的的ECS,通过ftp将缺失的库文件上传到实例中。
- 通过FTP软件将其它正常服务器上的libcrypto.so.1.0.2k库文件上传到目标服务器的/tmp目录。
上传到目标服务器目录以实际环境为准,本文以/tmp目录为例。
- 执行如下命令,将文件拷贝到正常目录。
cp /tmp/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k
- 依次执行如下命令,修改文件权限、所有者和所属组。
chmod 755 /usr/lib64/libcrypto.so.1.0.2k
chown root:root /usr/lib64/libcrypto.so.1.0.2k
- 执行如下命令,创建软链接。
ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10
- 执行如下命令,启动SSH服务。
systemctl restart sshd
问题分析
OpenSSL 加密库 (libcrypto)实现了广泛用于各种 Internet 标准的加密算法。该库提供的服务被 TLS 和 CMS 的 OpenSSL 实现所使用,它们也被用于实现许多其他第三方产品和协议,SSH服务的运行也依赖此库文件。通常此类问题是由于相关库文件异常所致,即文件丢失或权限配置异常等。 如果您有其他问题,欢迎您联系火山引擎技术支持服务