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)。


  1. Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
  2. Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
  3. Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
  4. Oct 16 08:59:45 openstack sshd[1214]: fatal: No supported key exchange algorithms [preauth]

导致该问题的根源是,sshd守护进程不知怎么地不能加载SSH主机密钥了。

当OpenSSH服务器第一次安装到Linux系统时,SSH主机密钥应该会自动生成以供后续使用。如果,不管怎样,密钥生成过程没有成功完成,那就会导致这样的SSH登录问题。

让我们检查能否在相应的地方找到SSH主机密钥。


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

如果SSH主机密钥在那里找不到,或者它们的大小被截断成为0(就像上面那样),你需要从头开始重新生成主机密钥。

重新生成SSH主机密钥

在Debian、Ubuntu或其衍生版上,你可以使用dpkg-reconfigure工具来重新生成SSH主机密钥,过程如下:


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

在CentOS、RHEL或Fedora上,你所要做的是,删除现存(有问题的)密钥,然后重启sshd服务。


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

另外一个重新生成SSH主机密钥的方式是,使用ssh-keygen命令来手动生成。


  1. $ sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  2. $ sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
  3. $ sudo ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

在生成新的SSH主机密钥后,确保它们能在/etc/ssh目录中找到。此时,不必重启sshd服务。


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

现在,再试试SSH到SSH服务器吧,看看问题是否已经离你而去了。

原文发布时间:2014-11-14

本文来自云栖合作伙伴“linux中国”

时间: 2024-09-09 09:05:40

Linux有问必答:如何修复“sshd error: could not load host key”的相关文章

Linux有问必答:如何修复Chrome的"Your profile could not be opened correctly"

Linux有问必答:如何修复Chrome的"Your profile could not be opened correctly" 提问:当我在linux打开Google Chrome 浏览器时,我已经几次收到弹出窗口,提示我的配置文件没有被正确打开(Your profile could not be opened correctly.).每次我打开Chrome都要弹出来,我应该如何修复这个问题? 当你在你的Chrome上看见"Your profile could not b

Linux有问必答:如何修复“运行aclocal失败:没有该文件或目录”

Linux有问必答:如何修复"运行aclocal失败:没有该文件或目录" 问题:我试着在Linux上构建一个程序,该程序的开发版本是使用"autogen.sh"脚本进行的.当我运行它来创建配置脚本时,却发生了下面的错误: Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326. autoreconf:

linux中提示COULD NOT LOAD HOST KEY: /ETC/SSH/SSH_ED25519_KEY

启动SSHD 的时候系统提示 Could not load host key: /etc/ssh/ssh_ed25519_key 新版的opensshd 中添加了Ed25519 做签名验证,而之前系统里没这个算法的证书,所以办法也很简单新生成下证书即可. ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ED25519_key 我是输入命令/etc/init.d/ssh start后出现提示: Could not load host key: /etc/ssh

Linux 有问必答:如何修复“fatal error: openssl/aes.h: No such file or directory

Linux 有问必答:如何修复"fatal error: openssl/aes.h: No such file or directory Question:我尝试在Linux编译一个程序,但是编译失败并报了一个错,"fatal error: openssl/aes.h: No such file or directory".我该怎样安装要求的头文件并在我的Linux上解决这个问题? fatal error: openssl/aes.h: No such file or di

Linux 有问必答:如何在Linux 中修复“fatal error: x264.h: No such file or directo

Linux 有问必答:如何在Linux 中修复"fatal error: x264.h: No such file or directo 提问: 我想在Linux中从源码编译视频编码程序.到那时,在编译时,我遇到了一个错误"fatal error: x264.h: No such file or directory",我该如何修复? 下面的编译错误错明你系统中没有x264开发库文件. fatal error: x264.h: No such file or directory

Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or dir

Linux 有问必答:如何在Linux中修复"fatal error: lame/lame.h: No such file or dir 提问: 我尝试着在Linux中编译视频编码器,但是编译提示出错:"fatal error: lame/lame.h: No such file or directory", 我该如何修复这个错误? 下面的编译错误说明你的系统没有安装LAME库和它的开发文件. fatal error: lame/lame.h: No such file or

Linux有问必答:如何修复"fatal error: jsoncpp/json/json.h: No such file..."

Linux有问必答:如何修复"fatal error: jsoncpp/json/json.h: No such file..." 问题:我试着编译一个C++程序,但是我碰到了以下错误: "fatal error: jsoncpp/json/json.h: No such file or directory" 我怎样修复这个问题呢? 该错误指出你缺少JsonCpp开发文件(例如,JsonCpp库和头文件).JsonCpp是一个用于JSON格式数据复制的C++库.下面

Linux有问必答:如何修复“X11 forwarding request failed on channel 0”错误

Linux有问必答:如何修复"X11 forwarding request failed on channel 0"错误 问题: 当我尝试使用SSH的X11转发选项连接到远程主机时, 我在登录时遇到了一个 "X11 forwarding request failed on channel 0" (X11 转发请求在通道0上失败)的错误. 我为什么会遇到这个错误,并且该如何修复它? 首先,我们假设你已经正确启用了SSH的X11转发. 如果你在登录时遇到"X1

Linux有问必答:如何修复“ImportError: No module named scapy.all”

Linux有问必答:如何修复"ImportError: No module named scapy.all" 问题:当我运行一个Python应用程序时,出现了这个提示消息"ImportError: No module named scapy.all".我怎样才能修复这个导入错误呢? Scapy是一个用Python写的灵活的数据包生成及嗅探程序.使用Scapy,你可以完成创建任意数据包并发送到网络上.从网络上或转储文件中读取数据包.转换数据包等工作.使用Scapy的通