GNU/Linux >> Tutoriales Linux >  >> Linux

no hay información de versión disponible (requerido por /usr/bin/ssh)

Problema:libssl.so.1.0.0 y libcrypto.so.1.0.0 no hay información de versión disponible advertencia/error.

Después de mucha investigación, tiempo y esfuerzo (tomó semanas), esto es lo que finalmente terminé haciendo...

En el directorio donde terminaste extrayendo el código fuente para tu versión de openssl 1.0.1h (también debería funcionar para otras versiones). Creo un archivo llamado openssl.ld

En este archivo pon esto...

OPENSSL_1.0.0 {
    global:
    *;
};

guárdalo. Ahora escribe...

make clean

(Solo para asegurarnos de que comenzamos de nuevo).

Ahora, la parte realmente alucinante...

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions

Entonces...

make
make test
make install
ldconfig

Y eso debería funcionar. (Es muy simple. No se requiere parchear).

He aplicado esta solución a Debian Wheezy en las versiones de 32 y 64 bits. Y he hecho una observación. La versión de 64 bits se establece automáticamente en el nuevo libssl.so.1.0.0 y libcrypto.so.1.0.0 archivos que se crean en el /usr/local/lib directorio. La versión de 32 bits no. Es por eso que al principio pensé que la versión de 32 bits de Debian Wheezy no sufría este problema, pero lo hace una vez que obtienes la versión de 32 bits para usar las nuevas bibliotecas de openssl en el /usr/local/lib dir.

Usando el ldd El comando para probar qué bibliotecas están usando los binarios también fue invaluable para resolver esto.


Compilé e instalé el archivo openssl. Después de eso, instalé ssh a través de apt-get.

Estas son probablemente dos versiones diferentes de OpenSSL. Probablemente estará bien ya que 1.0.0 es compatible en binario con 1.0.1, 1.0.2, etc. (sin embargo, no será compatible en binario con 1.1.0).

Tu ssh probablemente esté usando la versión de OpenSSL en /usr/lib/x86_64-linux-gnu/ . Deberías usar LD_PRELOAD para asegurarse de que se esté utilizando su versión de OpenSSL (suponiendo compatibilidad binaria, por supuesto).

Si no desea utilizar LD_PRELOAD y amigos, luego construye ssh de fuentes Asegúrese de especificar un rpath para asegurarse de que el editor de enlaces use su versión de OpenSSL, no la versión del sistema. Es decir, tu LDFLAGS debe incluir algo como -Wl,-rpath,<path to your openssl> . Eso es además del habitual -lcrypto , -lssl y -L<path to your openssl> .

Si está en Mac OS X, tenga en cuenta que las opciones del enlazador como -Bstatic y -rpath son silenciosamente ignorados. Encontrará bloqueos misteriosos debido a binarios incompatibles porque OS X proporciona 0.9.8.

no hay información de versión disponible

En cuanto a la información de la versión, no tengo ni idea. ssh puede usar OPENSSL_VERSION_NUMBER en tiempo de compilación o SSLeay /SSLeay_version en tiempo de ejecución. Ver OPENSSL_VERSION_NUMBER(3) para más detalles.

¿Cómo solucionar este error?

Tal vez estoy leyendo mal las cosas, pero no veo ningún error en ninguna parte de la publicación.


Linux
  1. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

  2. Conflictos de Node.js:/sbin/node Vs /usr/bin/node?

  3. cmake --version apunta a /usr/bin/cmake mientras que cmake apunta a /usr/local/bin

  4. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

  5. ¿Por qué se requieren < o > para usar /dev/tcp?

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

Linux:¿/sbin/init no existe?

Diferencia entre /bin y /usr/bin

Se movió el contenido de /bin a /usr/bin, ¿es posible deshacerlo?

¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?

¿Qué es /usr/bin/[?