修复 sshd error: could not load host key

hosts.deny 文件内发现有很多被屏蔽的IP,想着去看下日志,发现有人在用脚本扫描 SSH 端口,除了这个以外还发现一个 SSH 服务错误

1
2
sshd[7736]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
sshd[7736]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key

经过查询之后搞清楚原因了

导致该问题的根源是,SSHD 守护进程不知怎么地不能加载 SSH 主机密钥了。当 OpenSSH 服务器第一次安装到 Linux 系统时,SSH 主机密钥应该会自动生成以供后续使用。如果密钥生成过程没有成功完成,那就会导致这样的 SSH 登录问题。

检查SSH主机密匙

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

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

解决方法

使用 dpkg-reconfigure 工具来重新生成 SSH 主机密钥

1
2
rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server

使用 ssh-keygen 命令来手动生成

1
2
3
4
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen-t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key

生成之后就没有这个错误了