Linux SSHD啟動(dòng)失敗:OpenSSL版本不匹配問題分析與解決方法
Linux SSHD 啟動(dòng)失敗:OpenSSL 版本不匹配問題分析與解決
在 Linux 服務(wù)器上,sshd 可能因 OpenSSL 版本不匹配而啟動(dòng)失敗,具體錯(cuò)誤信息如下:
Mar 11 00:09:20 localhost sshd[51560]: OpenSSL version mismatch. Built against 30000070, you have 30200020 Mar 11 00:09:20 localhost systemd[1]: sshd.service: Main process exited, code=exited, status=255/EXCEPTION Mar 11 00:09:20 localhost systemd[1]: sshd.service: Failed with result 'exit-code'. Mar 11 00:09:20 localhost systemd[1]: Failed to start OpenSSH server daemon.
本篇文章將詳細(xì)分析該錯(cuò)誤的原因,并提供多種解決方案。
問題分析
從錯(cuò)誤日志來看,sshd 需要 OpenSSL 3.0.7(版本號 30000070),但系統(tǒng)當(dāng)前運(yùn)行的是 OpenSSL 3.2.2(版本號 30200020)??赡艿脑虬ǎ?/p>
升級 OpenSSL 后未重啟相關(guān)服務(wù)
sshd仍然使用緩存的舊 OpenSSL 版本。
系統(tǒng)中存在多個(gè) OpenSSL 版本
- 可能
sshd仍然鏈接到舊的 OpenSSL 3.0.7,而不是 OpenSSL 3.2.2。
動(dòng)態(tài)鏈接庫 (libssl.so) 仍然指向舊版本
sshd可能仍然鏈接到/usr/lib64/libssl.so.3.0.7,導(dǎo)致版本沖突。
解決方案
方法 1:重啟 SSH 服務(wù)
如果系統(tǒng)近期升級了 OpenSSL,嘗試重啟 sshd:
systemctl restart sshd
如果 sshd 仍然無法啟動(dòng),繼續(xù)執(zhí)行以下步驟。
我是重啟沒起來,同時(shí)觀察了/var/log/message日志,然后方法2
方法 2:檢查 sshd 依賴的 OpenSSL 版本
使用 ldd 命令檢查 sshd 依賴的 OpenSSL 版本:
ldd /usr/sbin/sshd | grep ssl
如果輸出的 libssl.so 版本仍然是 3.0.7(舊版本),說明 sshd 沒有鏈接到新版本的 OpenSSL。
我是什么也沒有輸出,然后ldconfig就沒有執(zhí)行,直接方法3
更新動(dòng)態(tài)庫緩存
ldconfig
重新檢查 ldd 輸出,確保 sshd 現(xiàn)在鏈接到 OpenSSL 3.2.2。
如果 ldd 仍然指向舊的 OpenSSL 版本,請繼續(xù)執(zhí)行方法 3。
方法 3:檢查 OpenSSL 共享庫
查看 /usr/lib64 目錄下的 OpenSSL 版本:
ls -l /usr/lib64/libssl.so* ls -l /usr/lib64/libcrypto.so*
如果存在多個(gè) libssl.so 版本,例如:
/usr/lib64/libssl.so.3 -> libssl.so.3.0.7 /usr/lib64/libssl.so.3.0.7 /usr/lib64/libssl.so.3.2.2
說明 sshd 可能仍然鏈接到了 libssl.so.3.0.7。
?? 解決方法
手動(dòng)將 libssl.so 鏈接到最新版本:
ln -sf /usr/lib64/libssl.so.3.2.2 /usr/lib64/libssl.so.3 ln -sf /usr/lib64/libcrypto.so.3.2.2 /usr/lib64/libcrypto.so.3
然后執(zhí)行:
ldconfig systemctl restart sshd
我都是指定的3.2.2,所以方法4走起

方法 4:重新安裝 OpenSSH
如果問題仍未解決,可能需要重新安裝 openssh-server 以匹配新的 OpenSSL 版本:
yum reinstall openssh-server -y # CentOS/RHEL apt reinstall openssh-server -y # Debian/Ubuntu
然后重啟 sshd:
systemctl restart sshd
解決了
總結(jié)
- 如果只是升級了 OpenSSL,先嘗試
systemctl restart sshd。 - 如果
sshd仍然報(bào)錯(cuò),檢查ldd /usr/sbin/sshd | grep ssl以確定依賴的 OpenSSL 版本。 - 如果
sshd仍然鏈接到舊版本 OpenSSL,嘗試ldconfig更新動(dòng)態(tài)庫。 - 如果
ldconfig無效,檢查/usr/lib64是否有舊版本libssl.so,并手動(dòng)創(chuàng)建符號鏈接。 - 如果問題仍然存在,重新安裝
openssh-server以匹配新的 OpenSSL 版本。
通過上述方法,你應(yīng)該可以成功解決 SSHD 啟動(dòng)失敗的問題。
到此這篇關(guān)于Linux SSHD啟動(dòng)失敗:OpenSSL版本不匹配問題分析與解決方法的文章就介紹到這了,更多相關(guān)Linux SSHD啟動(dòng)失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
centos6.6 下 安裝 php7 + nginx環(huán)境的方法
這篇文章主要介紹了centos6.6 下 安裝 php7 + nginx環(huán)境的方法,總結(jié)分析了centos6.6 安裝 php7 + nginx環(huán)境的相關(guān)配置命令與操作技巧,需要的朋友可以參考下2020-03-03
linux網(wǎng)絡(luò)參數(shù)配置方法詳解
這篇文章主要介紹了linux網(wǎng)絡(luò)參數(shù)的配置方法,這樣可以讓你的服務(wù)器訪問網(wǎng)絡(luò),主要參數(shù):IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS2013-11-11
UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY
這篇文章主要介紹了UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
使用ssh-keygen,實(shí)現(xiàn)免密碼登陸linux的方法
下面小編就為大家?guī)硪黄褂胹sh-keygen,實(shí)現(xiàn)免密碼登陸linux的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
Linux系統(tǒng)關(guān)機(jī)命令之間的區(qū)別及用法詳解
在本篇文章里小編給大家整理了一篇關(guān)于Linux系統(tǒng)關(guān)機(jī)命令之間的區(qū)別及用法詳解內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。2020-12-12

