sat*_*sat 6 linux debian openssh openssl installation
我no version information available在制作时得到了ssh。
OpenSSL 版本:
sat:~# openssl version
OpenSSL 1.0.1f 6 Jan 2014
Run Code Online (Sandbox Code Playgroud)
这是输出ldd /usr/bin/ssh:
/usr/bin/ssh: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/ssh)
linux-vdso.so.1 => (0x00007fff48bff000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fdd57f1f000)
libcrypto.so.1.0.0 => /usr/local/lib/libcrypto.so.1.0.0 (0x00007fdd57b3a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdd57935000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdd5771e000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fdd57508000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fdd572c8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdd56f3e000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdd583b3000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fdd56c6a000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fdd56a40000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fdd5683c000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fdd56633000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fdd5642e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdd56212000)
Run Code Online (Sandbox Code Playgroud)
的输出locate libcrypto.so.1.0.0:
sat:~# locate libcrypto.so.1.0.0
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/usr/local/lib/libcrypto.so.1.0.0
/usr/src/openssl-1.0.1f/libcrypto.so.1.0.0
Run Code Online (Sandbox Code Playgroud)
如何修复此错误?
笔记:
我编译并安装了openssl. 之后,我ssh通过apt-get.
小智 9
问题:libssl.so.1.0.0并且libcrypto.so.1.0.0没有可用的版本信息警告/错误。
经过大量研究、时间和努力,(花了数周),这就是我最终做的……
在您最终为您的 openssl 1.0.1h 版本(也应该适用于其他版本)提取源代码的目录中,我创建了一个名为 openssl.ld
在这个文件中把这个...
OPENSSL_1.0.0 {
global:
*;
};
Run Code Online (Sandbox Code Playgroud)
保存。现在输入...
make clean
Run Code Online (Sandbox Code Playgroud)
(只是为了确保我们重新开始。)
现在是真正令人难以置信的部分......
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Run Code Online (Sandbox Code Playgroud)
然后...
make
make test
make install
ldconfig
Run Code Online (Sandbox Code Playgroud)
那应该这样做。(太简单了。不需要打补丁。)
我已将此解决方案应用于 32 位和 64 位版本的 Debian Wheezy。并进行了观察。64 位版本自动默认为目录中创建的新文件libssl.so.1.0.0和libcrypto.so.1.0.0文件/usr/local/lib。32位版本没有。这就是为什么我一开始认为 32 位版本的 Debian Wheezy 没有遇到这个问题,但是一旦您获得 32 位版本以在/usr/local/lib目录中使用新的 openssl 库,就会出现这个问题。
使用该ldd命令来测试二进制文件正在使用哪些库对于解决这个问题也是非常宝贵的。
我编译并安装了openssl。之后我通过apt-get安装了ssh。
它们可能是 OpenSSL 的两个不同版本。你可能会没事,因为 1.0.0 与 1.0.1、1.0.2 等二进制兼容(但是,它不会与 1.1.0 二进制兼容)。
您ssh可能正在使用 OpenSSL 的版本/usr/lib/x86_64-linux-gnu/。您应该使用它LD_PRELOAD来确保正在使用您的 OpenSSL 版本(当然假设二进制兼容性)。
如果您不想使用LD_PRELOAD朋友,请ssh从源代码构建。请务必指定 ,rpath以确保链接编辑器使用您的 OpenSSL 版本,而不是系统的版本。也就是说,您LDFLAGS应该包含类似的内容-Wl,-rpath,<path to your openssl>。这是除了惯用的-lcrypto、-lssl和 之外的-L<path to your openssl>。
如果您使用的是 Mac OS X,请注意链接器选项(例如-Bstatic和 )-rpath将被默默忽略。由于 OS X 提供 0.9.8,您将遇到由于不兼容的二进制文件而导致的神秘崩溃。
没有可用的版本信息
至于没有版本信息,我就不知道了。ssh可以OPENSSL_VERSION_NUMBER在编译时使用,SSLeay也可以SSLeay_version在运行时使用。OPENSSL_VERSION_NUMBER(3)详情请参阅。
如何修复这个错误?
也许我误读了一些东西,但我在帖子中没有看到任何错误。
| 归档时间: |
|
| 查看次数: |
43975 次 |
| 最近记录: |