SSH オープン開始中にエラーが発生しました: /usr/sbin/sshd:/lib/libcrypt.so.1: バージョン 'XCRYPT_2.0' が見つかりません (/usr/sbin/sshd に必要)

SSH オープン開始中にエラーが発生しました: /usr/sbin/sshd:/lib/libcrypt.so.1: バージョン 'XCRYPT_2.0' が見つかりません (/usr/sbin/sshd に必要)

私は組み込みボードを開発しており、ボードにアクセスするにはスムーズに動作するためにSSHが必要です。現在のデバッグ目的でシリアル接続を使用してボードにアクセスします。

これでopensshを起動しようとすると、次のエラーが発生します。

/usr/sbin/sshd: /lib/libcrypt.so.1: version `XCRYPT_2.0' not found (required by /usr/sbin/sshd)

/usr/lib/libcrypt.so.1に「XCRYPT_2.0」を提供する正しいlibcrypt.so.1があります。

これが私がしたことです:
rm /lib/libcrypt.so.1

ln -s /usr/lib/libcrypt.so.1 /lib/libcrypt.so.1

SSHを動作させることができます。しかし、/lib/libcrypt.so.1を削除する必要があることを発見しました。この共有オブジェクトが存在しない場合、 pam_unix.so/some 他の共有オブジェクトが問題を引き起こしていると思います。シリアルログイン(次の再起動)をしてもマザーボードにログインできないからです。

「ログイン」プロンプトも表示されません。

私の質問は、sshdに共有オブジェクトパスを動的に提供する方法はありますか?

/etc/init.d/sshd <動的に共有オブジェクトパスを提供> start

または

/usr/sbin/sshd <動的に共有オブジェクトパスを提供> start

このシステムに関する追加情報:

openssh 7.8/7.8p1 バージョンの使用

ルートファイルシステムを取得するには、Yocto Thud(2.6)を使用します。

Linux 4.14の実行

答え1

環境変数を使用して、共有ライブラリが検索されるディレクトリを設定できますLD_LIBRARY_PATH

libcrypt.so.1を/etc/ssh/libs/にコピーし(もちろん最初にディレクトリを作成した後)、sshdを起動します。

env LD_LIBRARY_PATH=/etc/ssh/libs /usr/sbin/sshd

sshdに渡されたすべてのパラメータは、まだ呼び出しの最初のパスに渡されなければなりません。

答え2

私も同じ問題がありました。 usr/lib 以下の項目を再利用するよう強制します。

関連情報