Linux 故障笔记:SSH 服务启动失败 (no hostkeys available)
1. 故障概要
-
日期: 2025年11月04日 (根据日志时间)
-
受影响系统:
zy-VMware-Virtual-Platform(Ubuntu Linux) -
故障描述:
ssh.service服务无法启动。使用systemctl status ssh.service查看时,服务状态显示为Failed with result 'exit-code',日志中显示服务在尝试启动后立即失败,并因重启过于频繁而被systemd停止。
2. 诊断与排查过程
2.1. 初步现象 (日志截图 1)

初次检查 systemctl status ssh.service 或相关 systemd 日志时,观察到的关键信息是(如上图所示):
An ExecStartPre= process belonging to unit ssh.service has exited.
The process' exit code is 'exited' and its exit status is 1.
- 分析: 这表明
systemd在正式运行 SSH 服务之前,执行一个预启动脚本 (ExecStartPre=) 时失败了。在ssh.service中,这个预启动脚本通常是sshd -t(配置文件语法测试)或一个检查密钥的脚本。
2.2. 深入诊断 (日志截图 2)

为了查看 sshd 进程本身的确切错误,通过 journalctl -u ssh.service 或查看更详细的 systemd 日志,发现了更具体的错误信息(如上图所示):
Nov 04 10:23:38 zy-VMware-Virtual-Platform sshd[3103]: sshd: no hostkeys available -- exiting.
Nov 04 10:23:38 zy-VMware-Virtual-Platform systemd[1]: ssh.service: Control process exited, code=exited, status=1/FAILURE
-
分析: 这条日志是诊断的关键。它不是
systemd报的错,而是sshd进程(SSH 守护进程)自己打印的退出信息。 -
中文含义:
sshd进程报告:“没有可用的主机密钥——正在退出。”
3. 根本原因分析 (RCA)
-
直接原因: SSH 守护进程 (
sshd) 在启动时,会检查其配置目录(通常是/etc/ssh/)是否存在用于向客户端标识自己身份的主机密钥(Host Keys),例如ssh_host_rsa_key、ssh_host_ed25519_key等。 -
安全机制: 这是 SSH 协议的安全核心。如果服务器没有这些密钥,它就无法向连接的客户端证明自己的身份,也无法协商安全加密。为了防止不安全的连接和潜在的中间人攻击,
sshd被设计为在这种致命配置错误下主动拒绝启动。 -
根本原因 (推测): 用户通常不会手动删除这些密钥。此问题的最常见根源是:
openssh-server软件包在系统安装或软件包初始化时,其安装脚本未能成功运行ssh-keygen -A(自动生成所有类型密钥的命令)。这可能是由于安装被中断、使用了精简的系统镜像或初始化脚本出错导致的。
4. 解决方案与后续步骤
4.1. 解决方案
-
手动生成密钥: 通过
ssh-keygen工具手动生成所有缺失的主机密钥。sudo ssh-keygen -A-A标志会为所有支持的密钥类型(RSA, DSA, ECDSA, Ed25519)创建密钥文件(如果它们不存在)。
-
重启 SSH 服务: 生成密钥后,
sshd进程启动时就能找到它们了。sudo systemctl start ssh.service -
验证服务: 检查服务状态,确认其已成功运行。
sudo systemctl status ssh.service- 状态应显示为
active (running)。
- 状态应显示为
4.2. 经验总结
-
systemd报告的exit-code错误通常是一个通用结果。 -
排查
systemd服务失败时,必须使用journalctl -u <service-name>来查看服务进程本身输出的详细错误日志,才能定位到真正的问题。 -
sshd: no hostkeys available是一个明确的配置问题,表示/etc/ssh/目录中缺少主机密钥文件。
文章作者:Administrator
文章链接:http://localhost:8090/archives/wei-ming-ming-wen-zhang-jsSk9f0w
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论