本文介紹Linux系統的ECS實例,啟動SSH服務時提示“error while loading shared libraries”錯誤時的解決方案。
問題現象
Linux系統的ECS實例啟動SSH服務時,提示類似如下的錯誤信息。
error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory.
執行cat /var/log/secure
查看secure日志,出現類似如下的錯誤信息。
PAM unable to dlopen(/usr/lib64/security/pam_tally.so): /usr/lib64/security/pam_tally.so: cannot open shared object file: No such file or directory.
問題原因
SSH服務的運行依賴相關系統庫文件,當相關庫文件異常(如相關庫文件丟失或權限配置異常)會導致SSH服務啟動異常。
解決方案
您可以通過修復libcrypto.so.10庫文件或回滾云盤修復該問題。
方案一:修復libcrypto.so.10庫文件
您可以通過查看其他正常實例(A實例)中的庫文件信息來對照修復該異常實例(B實例)。
登錄正常實例(A實例),執行如下命令,查看libcrypto.so.10庫文件的信息。
ll /usr/lib64/libcrypto.so.10
系統顯示類似如下,libcrypto.so.10庫文件是libcrypto.so.1.0.1e庫文件的軟連接。
lrwxrwxrwx. 1 root root 19 Jan 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 root root 1965856 Jan 8 03:22 /usr/lib64/libcrypto.so.1.0.1e
記錄正常庫文件的路徑、權限、屬組等信息。
以VNC方式遠程連接該異常ECS實例(B實例)。
具體操作,請參見連接方式概述。
執行如下命令,查找libcrypto.so.1.0.1e庫文件。
find / -name libcrypto.so.1.0.1e
根據該ECS實例中是否存在libcrypto.so.1.0.1e庫文件,有以下兩種解決方案。
存在libcrypto.so.1.0.1e庫文件。
執行如下命令,將找到的文件拷貝到正常目錄。
cp [$File] /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:root /usr/lib64/libcrypto.so.1.0.1e
執行如下命令,創建軟鏈接。
ln -s /usr/lib64/libcrypto.so.1.0.1e /usr/lib64/libcrypto.so.10
執行如下命令,啟動SSH服務。
systemctl start sshd.service
方案二:通過回滾云盤恢復
如果通過方案一:修復libcrypto.so.10庫文件未修復,如果您為系統盤創建過快照,則您可以通過回滾系統盤歷史快照的方式來進行修復。具體操作,請參見使用快照回滾云盤。
快照回滾會導致回滾之后的數據丟失,請務必確認后再操作。
建議按時間從近到遠的順序逐一嘗試回滾快照,直至SSH服務能正常運行。如果回滾后還是無法正常運行SSH服務,則說明相應時間點的系統已經出現異常。