問題現象
SSH服務啟動報錯:啟動SSH服務時,提示缺少libcrypto.so.1.1庫檔案。
error while loading shared libraries:libcrypto.so.1.1: cannot open shared object file: No such file or directory.問題原因
共用庫檔案缺失或損壞:SSH服務及其認證模組在運行時,需要動態載入 libcrypto.so.1.1共用庫。若該檔案或其指向的真實檔案被誤刪、移動或損壞,將導致服務因找不到依賴庫而啟動失敗。
解決方案
若系統硬碟存在歷史快照,建議建立快照備份當前資料後,優先利用歷史快照復原系統硬碟,然後驗證SSH服務是否正常啟動。
若無歷史快照,則需準備一台與故障執行個體作業系統版本相同且在同一可用性區域的正常執行個體,通過掛載系統硬碟的方式恢複缺失的庫檔案。
步驟一:卸載系統硬碟
確保異常執行個體狀態為已停止,執行以下操作:
為防止誤操作導致資料丟失,建議對系統硬碟建立快照,備份當前資料。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
單擊異常執行個體ID進入執行個體詳情頁後,切換至Block Storage頁簽。
在系統硬碟的操作列選擇。
在卸載雲端硬碟對話方塊中確認資訊,單擊確定卸載。當執行個體狀態顯示無系統硬碟時,表示卸載成功。
步驟二:作為資料盤掛載至正常執行個體
確保正常執行個體狀態為運行中,執行以下操作:
掛載異常系統硬碟至正常執行個體。
單擊正常執行個體ID進入執行個體詳情頁。
切換至Block Storage頁簽後,單擊掛載雲端硬碟。
在掛載到執行個體頁面的目標盤中,選擇已卸載的異常系統硬碟,單擊下一步。
在分區及建立檔案系統並掛載介面,選擇稍後設定,完成掛載。
單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。
掛載檔案系統。
確定故障盤分區名稱。
sudo lsblk -fvda ├─vda1 ├─vda2 vfat 7938-FA03 /boot/efi └─vda3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 / vdb ├─vdb1 ├─vdb2 vfat 7938-FA03 └─vdb3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78樣本中,故障盤
vdb的根分區為vdb3需掛載,各分區含義如下:vdb1/vdb2:存放系統啟動相關程式,可忽略。
vdb3:存放作業系統檔案和資料,需掛載。
建立目錄並掛載檔案系統。
sudo mkdir <掛載目錄> && sudo mount /dev/<分區名稱> <掛載目錄>參數
說明
<分區名稱>替換為上一步確定的故障盤的根分區名稱。
<掛載目錄>自訂<掛載目錄>,應為以
/開頭的空路徑,可自訂但不可重複。重要若目錄非空,原目錄下檔案將被隱藏導致無法讀取,請謹慎評估。
以將目標資料分割
vdb1掛載至新建立的/test為例,需執行sudo mkdir /test && sudo mount /dev/vdb3 /test。檢查檔案系統掛載結果。
運行
sudo lsblk命令,若目標資料分割存在掛載目錄(MOUNTPOINT),表示檔案系統掛載成功。
步驟三:修複libcrypto.so.10檔案
以Alibaba Cloud Linux 3.2104為例,在正常執行個體中修複掛載路徑下的共用庫檔案。
查看
libcrypto.so.1.1檔案路徑。不同的作業系統下,庫檔案的名稱會有所差異,請根據實際報錯名稱進行搜尋。
sudo find / -name libcrypto.so.1.1輸出內容:
/usr/lib64/libcrypto.so.1.1樣本輸出可確認庫檔案位於
/usr/lib64/下。檢查軟串連指向。
ll /usr/lib64/libcrypto.so.1.1輸出內容:
lrwxrwxrwx. 1 root root 19 Nov 20 2024 /usr/lib64/libcrypto.so.1.1 -> libcrypto.so.1.1.1k樣本表示當訪問
/usr/lib64/libcrypto.so.1.1時,實際上訪問的是/usr/lib64/libcrypto.so.1.1.1k檔案。因此需要將正常libcrypto.so.1.1.1k移動至故障盤的相同路徑下。修複庫檔案。
<掛載目錄>需替換為實際的掛載路徑。sudo cp /usr/lib64/libcrypto.so.1.1.1k <掛載目錄>/usr/lib64/樣本需要執行
sudo cp /usr/lib64/libcrypto.so.1.1.1k /test/usr/lib64/。修複許可權並重建軟串連。
設定檔案許可權和歸屬。
<掛載目錄>需替換為實際的掛載路徑。# 設定許可權為 rwxr-xr-x sudo chmod 755 <掛載目錄>/usr/lib64/libcrypto.so.1.1.1k # 設定所有者和所屬組為 root sudo chown root:root <掛載目錄>/usr/lib64/libcrypto.so.1.1.1k樣本需要執行
sudo chmod 755 /test/usr/lib64/libcrypto.so.1.1.1k和sudo chown root:root /test/usr/lib64/libcrypto.so.1.1.1k。重建軟連結。
sudo ln -sf /usr/lib64/libcrypto.so.1.1.1k <掛載目錄>/usr/lib64/libcrypto.so.1.1樣本需執行
sudo ln -sf /usr/lib64/libcrypto.so.1.1.1k /test/usr/lib64/libcrypto.so.1.1。
步驟四:作為系統硬碟掛載回異常ECS執行個體
卸載檔案系統。
<掛載目錄>需替換為實際的掛載路徑。sudo umount <掛載目錄>樣本需執行
sudo umount /test。卸載修複後的系統硬碟。
返回ECS控制台,進入正常執行個體詳情頁的Block Storage頁簽。
單擊修複後的系統硬碟操作列的卸載。
在卸載雲端硬碟介面,單擊確定卸載。
將修複後的系統硬碟掛載回源執行個體。
進入異常執行個體詳情頁的Block Storage頁簽,單擊掛載雲端硬碟。
在掛載到執行個體頁面的目標盤中,選擇修複後的系統硬碟,配置登入憑證後,單擊下一步。
在分區及建立檔案系統並掛載介面,選擇稍後設定,完成掛載。
啟動ECS執行個體。
步驟五:驗證結果
登入異常ECS執行個體,再次啟動SSH服務,查看是否正常。
確認服務恢複正常後,可按需釋放用於掛載修複的正常執行個體,以停止計費。
後續建議
謹慎操作核心系統檔案:在刪除、移動或修改核心系統檔案前,請務必建立快照備份資料,並確認操作的必要性和潛在風險。切勿輕易刪除不熟悉的系統檔案。
規範軟體安裝方式:優先使用系統內建的包管理器(如yum、apt)進行軟體安裝與卸載,以自動處理依賴關係,避免破壞共用庫。
> 卸載