ssh -v提示 : error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file-v

本文为博主原创文章,转载需获取作者授权。

背景

openssh经常会查出来存在安全漏洞,需要升级openssh至最新版本才能将漏洞修复。本次升级openssh之后,发现查看openssh版本抛出如下报错:

$ ssh -v
ssh: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

可见openssh升级的是有些问题的,而openssh作为Linux系统的基础软件,不容存在任何异常。

error while loading shared libraries: libcrypto.so.1.1: 报错可以看出,是ssh -v 的时候没有找到libcrypto.so.1.1 库所致。而libcrypto.so.1.1 库属于openssl软件所加载。

使用以下命令查看openssl所加载的动态库:

ldd /usr/local/openssl/bin/openssl

发现并没有找到。
回想一下,openssl装在了哪个目录之下。之前装openssl是使用以下命令。

./config --prefix=/usr/local/openssl zlib-dynamic shared

说明openssl装在了/usr/local/openssl之下。

解决办法

我们将openssl软件的库文件目录写入其运行加载的配置文件中,我的环境的openssl配置文件为:/etc/ld.so.conf.d/openssl.conf
将openssl库路径写入

# cat /etc/ld.so.conf.d/openssl.conf
/usr/local/openssl/lib

执行ldconfig 使之生效。

再次查看openssl引用的库文件,发现 libcrypto.so.1.1 已存在,如下所示。

$ ldd /usr/local/openssl/bin/openssl
        linux-vdso.so.1 =>  (0x00007ffd831f1000)
        libssl.so.1.1 => /usr/local/openssl/lib/libssl.so.1.1 (0x00007f5088257000)
        libcrypto.so.1.1 => /usr/local/openssl/lib/libcrypto.so.1.1 (0x00007f5087d8d000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00000038c1800000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000038c2000000)
        libc.so.6 => /lib64/libc.so.6 (0x00000038c1c00000)
        /lib64/ld-linux-x86-64.so.2 (0x00000038c1400000)

补充

记录学习ldd命令

LDD(1)                     Linux Programmer’s Manual                    LDD(1)

NAME
       ldd - print shared library dependencies

SYNOPSIS
       ldd [OPTION]... FILE...

DESCRIPTION
       ldd prints the shared libraries required by each program or shared library specified on the command line.

你可能感兴趣的:(Linux,1024程序员节)