关于/etc/ssh/ssh_host_key 被删除重建问题
以下是 HostKey 被删除后在 Proxmox / Debian / Ubuntu / CentOS 上重新生成的完整安全可执行流程:
1️⃣ 检查 HostKey 是否确实丢失
默认 HostKey 位置:
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
执行:
ls -l /etc/ssh/ssh_host_*
如果提示 No such file or directory,说明确实丢失。
2️⃣ 重新生成 HostKey
使用 ssh-keygen 内置命令生成:
生成 RSA HostKey(用于兼容性)
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
生成 ECDSA HostKey(更快更安全)
sudo ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key -N ""
生成 ED25519 HostKey(推荐)
sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
参数说明:
-t:指定密钥类型(rsa/ecdsa/ed25519)-b:密钥长度(4096/521)-f:输出位置-N "":私钥不设置密码(用于 SSH 服务自动使用)
3️⃣ 检查生成结果
确认公私钥均已生成:
ls -l /etc/ssh/ssh_host_*
应看到:
- 私钥:
ssh_host_rsa_key - 公钥:
ssh_host_rsa_key.pub - 以及其他算法对应文件。
4️⃣ 重启 SSH 服务
执行:
sudo systemctl restart ssh
或
sudo systemctl restart sshd
以使新生成的 HostKey 生效。
5️⃣ 注意客户端连接提示变化
由于 HostKey 已变化,之前连接该服务器的客户端会提示主机密钥已更改:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
在客户端执行:
ssh-keygen -R <your_server_ip_or_hostname>
再重新连接:
ssh <your_server_ip_or_hostname>
选择 yes 信任新的 HostKey,完成重连。
6️⃣ 批量环境注意事项(若是 Proxmox 大规模虚拟机)
如果需要多台虚拟机保持相同 HostKey(便于迁移无警告),可:
- 从母机复制
/etc/ssh/ssh_host_*到克隆的虚拟机对应位置; - 再重启
sshd。
否则建议每台机器独立生成,保证安全唯一。
⚡ 总结
✅ HostKey 被删除并不影响系统完整性,可直接手动生成恢复。
✅ 重启 ssh 服务后立即生效。
✅ 客户端需要清除原 known_hosts 后重新确认连接。

浙公网安备 33010602011771号