このトピックでは、Linux Elastic Compute service (ECS) インスタンスでSSHサービスを起動するときに「error while loading shared libraries」エラーメッセージが表示される問題の解決策について説明します。
問題の説明
Linux ECSインスタンスでSSHサービスを起動すると、次のようなエラーメッセージが表示されます。
共有ライブラリの読み込み中にエラー: libcrypto.so.10: 共有オブジェクトファイルを開くことができません: そのようなファイルやディレクトリがありません。
cat /var/log/secure
コマンドを実行して安全なログを表示すると、次のようなエラーメッセージが表示されます。
PAM unable to dlopen(/usr/lib64/security/pam_tally.so): /usr/lib64/security/pam_tally.so: cannot open shared object file: そのようなファイルやディレクトリはありません。
原因
SSHサービスは、実行する特定のシステムライブラリファイルに依存しています。 システムライブラリファイルが使用できなくなった場合や、システムライブラリファイルに対する権限が正しく設定されていない場合など、システムライブラリファイルで例外が発生した場合、SSHサービスは起動できません。
解決策
libcrypto.so.10ライブラリファイルを復元するか、システムディスクをロールバックして問題を解決します。
解決策1: libcrypto. so.10ライブラリファイルを復元する
正常なインスタンスのライブラリファイル情報に基づいて、障害のあるインスタンスのライブラリファイルを復元できます。
正常なインスタンスにログインし、次のコマンドを実行して、libcrypto.so.10ライブラリファイルに関する情報を表示します。
ll /usr/lib64/libcrypto.so.10
次のようなコマンド出力が返されます。これは、libcrypto.so.10ライブラリファイルがlibcrypto.so.1.0.1eライブラリファイルへのシンボリックリンクであることを示します。
lrwxrwxrwx。 1ルートルート19 1月8日12:40 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.1e
次のコマンドを実行して、libcrypto.so.1.0.1eライブラリファイルに関する情報を表示します。
ll /usr/lib64/libcrypto.so.1.0.1e
サンプル出力:
-rwxr-xr-x。 1ルートルート1965856 1月8日03:22 /usr/lib64/libcrypto.so.1.0.1e
正常なインスタンスのライブラリファイルのディレクトリ、権限、およびグループ情報をメモします。
仮想ネットワークコンピューティング (VNC) を使用して障害のあるインスタンスに接続します。
詳細については、「接続方法の概要」をご参照ください。
次のコマンドを実行して、libcrypto.so.1.0.1eライブラリファイルを照会します。
find / -name libcrypto.so.1.0.1e
次のいずれかの方法を使用して、libcrypto.so.1.0.1eライブラリファイルが存在するかどうかに基づいて問題を解決します。
libcrypto.so.1.0.1eライブラリファイルが存在します。
次のコマンドを実行して、正常なインスタンスのライブラリファイルのディレクトリと同じディレクトリにライブラリファイルをコピーします。
cp [$ファイル] /usr/lib64/libcrypto.so.1.0.1e
説明[$File] 変数を、障害のあるインスタンスで見つかったlibcrypto.so.1.0.1eライブラリファイルの絶対パスに置き換えます。
libcrypto.so.1.0.1eライブラリファイルが存在しません。
FTPを使用して、正常なインスタンスのlibcrypto.so.1.0.1eライブラリファイルを障害のあるインスタンスの
/usr/lib64
ディレクトリに転送します。
次のコマンドを順番に実行して、ライブラリファイルのアクセス許可、所有者、およびグループを変更します。
chmod 755 /usr/lib64/libcrypto.so.1.0.1e chownルート: root /usr/lib64/libcrypto.so.1.0.1e
次のコマンドを実行して、シンボリックリンクを作成します。
ln -s /usr/lib64/libcrypto.so.1.0.1e /usr/lib64/libcrypto.so.10
次のコマンドを実行してSSHサービスを開始します。
systemctl開始sshd.service
解決策2: 障害のあるインスタンスのシステムディスクをロールバックする
解決策1: libcrypto.so.10ライブラリファイルの復元の手順で問題を解決できず、障害のあるインスタンスのシステムディスクにスナップショットがある場合は、スナップショットを使用して障害のあるインスタンスのシステムディスクをロールバックできます。 詳細については、「スナップショットを使用したディスクのロールバック」をご参照ください。
スナップショットを使用してディスクをロールバックすると、スナップショットが作成されてからディスクがロールバックされるまでに行われたすべてのデータ変更が失われます。 ロールバック操作を実行するときは注意してください。
SSHサービスが期待どおりに実行できるようになるまで、システムディスクをロールバックするには、時系列の逆順序でスナップショットを選択することを推奨します。 スナップショットを使用してシステムディスクをロールバックした後にSSHサービスの開始に失敗した場合、スナップショットが作成された時点で例外が発生しました。 以前のスナップショットを使用して、システムディスクをロールバックできます。