GNU/Linux >> Linux Esercitazione >  >> Linux

nessuna informazione sulla versione disponibile (richiesto da /usr/bin/ssh)

Problema:libssl.so.1.0.0 e libcrypto.so.1.0.0 nessuna informazione sulla versione disponibile avviso/errore.

Dopo molte ricerche, tempo e impegno (ci sono volute settimane), ecco cosa ho finalmente fatto...

Nella directory in cui hai finito per estrarre il codice sorgente per la tua versione di openssl 1.0.1h (dovrebbe funzionare anche per altre versioni). Creo un file chiamato openssl.ld

In questo file metti questo...

OPENSSL_1.0.0 {
    global:
    *;
};

salvalo.Ora digita...

make clean

(Solo per essere sicuri che stiamo ricominciando da capo.)

Ora per la parte davvero sbalorditiva...

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

Allora...

make
make test
make install
ldconfig

E questo dovrebbe bastare. (È così semplice. Non è richiesta alcuna patch.)

Ho applicato questa soluzione a Debian Wheezy entrambe le versioni a 32 e 64 bit. E ho fatto un'osservazione. La versione a 64 bit passa automaticamente al nuovo libssl.so.1.0.0 e libcrypto.so.1.0.0 file che vengono creati nel /usr/local/lib directory. La versione a 32 bit no. Questo è il motivo per cui all'inizio avevo pensato che la versione a 32 bit di Debian Wheezy non soffrisse di questo problema, ma lo fa una volta ottenuta la versione a 32 bit per utilizzare le nuove librerie openssl nel /usr/local/lib dir.

Usando il ldd Il comando per testare quali librerie stanno usando i binari è stato prezioso anche per capire questo.


Ho compilato e installato il file openssl. Successivamente, ho installato ssh tramite apt-get.

Queste sono probabilmente due diverse versioni di OpenSSL. Probabilmente starai bene dato che 1.0.0 è binario compatibile con 1.0.1, 1.0.2, ecc. (non sarà binario compatibile con 1.1.0, tuttavia).

Il tuo ssh sta probabilmente usando la versione di OpenSSL in /usr/lib/x86_64-linux-gnu/ . Dovresti usare LD_PRELOAD per assicurarti che venga utilizzata la tua versione di OpenSSL (presupponendo la compatibilità binaria, ovviamente).

Se non vuoi usare LD_PRELOAD e amici, quindi crea ssh dalle fonti. Assicurati di specificare un rpath per garantire che l'editor di link utilizzi la tua versione di OpenSSL, non la versione del sistema. Cioè, il tuo LDFLAGS dovrebbe includere qualcosa come -Wl,-rpath,<path to your openssl> . Questo è in aggiunta al consueto -lcrypto , -lssl e -L<path to your openssl> .

Se utilizzi Mac OS X, tieni presente che le opzioni del linker come -Bstatic e -rpath vengono silenziosamente ignorati. Incontrerai misteriosi arresti anomali dovuti a binari incompatibili perché OS X fornisce 0.9.8.

nessuna informazione sulla versione disponibile

Per quanto riguarda nessuna informazione sulla versione, non ne ho idea. ssh può usare sia OPENSSL_VERSION_NUMBER in fase di compilazione o SSLeay /SSLeay_version in fase di esecuzione. Vedi OPENSSL_VERSION_NUMBER(3) per i dettagli.

Come correggere questo errore?

Forse sto interpretando male le cose, ma non vedo un errore da nessuna parte nel post.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

  3. Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

  4. autorizzazione negata per il compositore in /usr/local/bin/

  5. cmake --version punta a /usr/bin/cmake mentre which cmake punta a /usr/local/bin

Linux – /sbin/init non esiste?

Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

Quando devo usare #!/bin/bash e quando #!/bin/sh?

Differenza tra /bin e /usr/bin

Perché sono necessari < o > per usare /dev/tcp

#!/bin/sh vs #!/bin/bash per la massima portabilità