no version information available (required by /usr/bin/ssh)
Problem: libssl.so.1.0.0
and libcrypto.so.1.0.0
no version information available warning/error.
After much research, time and effort, (took weeks), here's what I finally ended up doing...
In the directory where you ended up extracting the source code for your version of openssl 1.0.1h (should work for other versions too.) I create a file called openssl.ld
In this file put this...
OPENSSL_1.0.0 {
global:
*;
};
save it. Now type in...
make clean
(Just to be sure we are starting fresh.)
Now for the really mind boggling part...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Then...
make
make test
make install
ldconfig
And that should do it. (It's so simple. No patching required.)
I have applied this solution to Debian Wheezy both 32 and 64 bit versions. And have made an observation. The 64 bit version automatically defaults to the new libssl.so.1.0.0
and libcrypto.so.1.0.0
files that are created in the /usr/local/lib
directory. The 32 bit version does not. Which is why I had thought at first that the 32 bit version of Debian Wheezy didn't suffer from this problem, but it does once you get the 32 bit version to use the new openssl libraries in the /usr/local/lib
dir.
Using the ldd
command to test what libraries the binaries are using was invaluable in figuring this out too.
I compiled and installed the openssl. After that, I installed ssh through apt-get.
These are probably two different versions of OpenSSL. You will probably be OK since 1.0.0 is binary compatible with 1.0.1, 1.0.2, etc (it won't be binary compatible with 1.1.0, however).
Your ssh
is probably using the version of OpenSSL in /usr/lib/x86_64-linux-gnu/
. You should use LD_PRELOAD
to ensure your version of OpenSSL is being used (assuming binary compatibility, of course).
If you don't want to use LD_PRELOAD
and friends, then build ssh
from sources. Be sure to specify an rpath
to ensure the link editor uses your version of OpenSSL, not he system's version. That is, your LDFLAGS
should include something like -Wl,-rpath,<path to your openssl>
. That's in addition to the customary -lcrypto
, -lssl
and -L<path to your openssl>
.
If you are on Mac OS X, then be advised that linker options like -Bstatic
and -rpath
are silently ignored. You will encounter mysterious crashes due to incompatible binaries because OS X provide 0.9.8.
no version information available
As for no version information, I have no idea. ssh
can use either OPENSSL_VERSION_NUMBER
at compile time or SSLeay
/SSLeay_version
at runtime. See OPENSSL_VERSION_NUMBER(3)
for details.
How to fix this error?
Perhaps I'm misreading things, but I don't see an error anywhere in the post.