关于/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 后重新确认连接。

posted @ 2025-07-08 10:44  学不会xuebuhui  阅读(65)  评论(0)    收藏  举报
Language: javascript //图片预览