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.