[轉] Linux有問必答:如何修復“sshd error: could not load host key”


編譯自:http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html作者: GOLinux
本文地址:https://linux.cn/article-4226-1.html

問題:當我嘗試SSH到一台遠程服務器時,SSH客戶端登陸失敗並提示“Connection closed by X.X.X.X”。在SSH服務器那端,我看到這樣的錯誤消息:“sshd error: could not load host key.”。這發生了什么問題,我怎樣才能修復該錯誤?

該SSH連接錯誤的詳細症狀如下。

SSH客戶端方面:當你嘗試SSH到一台遠程主機時,你沒有看見登錄屏幕,你的SSH連接就立即關閉,並提示此消息:“Connection closed by X.X.X.X”。

SSH服務器方面:在系統日志中,你看到如下錯誤消息(如,在Debian/Ubuntu上,/var/log/auth.log)。

Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_rsa_keyOct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_dsa_keyOct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_keyOct 16 08:59:45 openstack sshd[1214]: fatal: No supported key exchange algorithms [preauth]

導致該問題的根源是,sshd守護進程不知怎么地不能加載SSH主機密鑰了。

當OpenSSH服務器第一次安裝到Linux系統時,SSH主機密鑰應該會自動生成以供后續使用。如果,不管怎樣,密鑰生成過程沒有成功完成,那就會導致這樣的SSH登錄問題。

img

讓我們檢查能否在相應的地方找到SSH主機密鑰。

$ ls -al /etc/ssh/ssh*key 

img

如果SSH主機密鑰在那里找不到,或者它們的大小被截斷成為0(就像上面那樣),你需要從頭開始重新生成主機密鑰。

重新生成SSH主機密鑰

在Debian、Ubuntu或其衍生版上,你可以使用dpkg-reconfigure工具來重新生成SSH主機密鑰,過程如下:

$ sudo rm -r /etc/ssh/ssh*key$ sudo dpkg-reconfigure openssh-server 

img

在CentOS、RHEL或Fedora上,你所要做的是,刪除現存(有問題的)密鑰,然后重啟sshd服務。

$ sudo rm -r /etc/ssh/ssh*key$ sudo systemctl restart sshd

另外一個重新生成SSH主機密鑰的方式是,使用ssh-keygen命令來手動生成。

$ sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key$ sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key$ sudo ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key 

img

在生成新的SSH主機密鑰后,確保它們能在/etc/ssh目錄中找到。此時,不必重啟sshd服務。

 $ ls -al /etc/ssh/ssh*key 

現在,再試試SSH到SSH服務器吧,看看問題是否已經離你而去了。


via: http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html

譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM