天天看點

Linux有問必答:如何修複“sshd error: could not load host key”Linux有問必答:如何修複“sshd error: could not load host key”

問題:當我嘗試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_key

oct 16 08:59:45 openstack sshd[1214]: error: could not load host key: /etc/ssh/ssh_host_dsa_key

oct 16 08:59:45 openstack sshd[1214]: error: could not load host key: /etc/ssh/ssh_host_ecdsa_key

oct 16 08:59:45 openstack sshd[1214]: fatal: no supported key exchange algorithms [preauth]

導緻該問題的根源是,sshd守護程序不知怎麼地不能加載ssh主機密鑰了。

當openssh伺服器第一次安裝到linux系統時,ssh主機密鑰應該會自動生成以供後續使用。如果,不管怎樣,密鑰生成過程沒有成功完成,那就會導緻這樣的ssh登入問題。

Linux有問必答:如何修複“sshd error: could not load host key”Linux有問必答:如何修複“sshd error: could not load host key”

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

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

Linux有問必答:如何修複“sshd error: could not load host key”Linux有問必答:如何修複“sshd error: could not load host key”

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

<a target="_blank"></a>

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

$ sudo rm -r /etc/ssh/ssh*key

$ sudo dpkg-reconfigure openssh-server

Linux有問必答:如何修複“sshd error: could not load host key”Linux有問必答:如何修複“sshd error: could not load host key”

在centos、rhel或fedora上,你所要做的是,删除現存(有問題的)密鑰,然後重新開機sshd服務。

$ 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

Linux有問必答:如何修複“sshd error: could not load host key”Linux有問必答:如何修複“sshd error: could not load host key”

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

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

原文釋出時間:2014-11-14

本文來自雲栖合作夥伴“linux中國”

繼續閱讀