服务器 SSH 密钥会因软件升级而更改吗?

服务器 SSH 密钥会因软件升级而更改吗?

我在云端有一个 VPS(Ubuntu 服务器 16.04)

  • 我通过 SSH 连接到服务器(没问题)
  • 我更新软件:apt upgrade+apt update
  • 我重新启动服务器:shutdown -r now。 SSH 连接已关闭
  • 当我尝试重新连接(20 秒后)时,SSH 说ECDSA host key for <server> has changed and you have requested strict checking.

这不是我第一次像这样更新服务器,但这是我第一次看到密钥更改。这是正常的吗?

更新包括 libssl 和 openssl 的新版本,这可能是原因吗?

答案1

find /etc -name '*ssh*' -ls显示唯一的最新文件是各种 ssh 密钥(在服务器重新启动结束时全部更改)。

查看 /var/log/syslog,我发现这些行:

Sep 29 20:56:20 <server> cloud-init[1245]: Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Sep 29 20:56:20 <server> cloud-init[1245]: Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
Sep 29 20:56:20 <server> cloud-init[1245]: Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Sep 29 20:56:20 <server> cloud-init[1245]: Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
Sep 29 20:56:20 <server> cloud-init[1245]: Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key.
Sep 29 20:56:20 <server> cloud-init[1245]: Your public key has been saved in /etc/ssh/ssh_host_ecdsa_key.pub.
Sep 29 20:56:20 <server> cloud-init[1245]: Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Sep 29 20:56:20 <server> cloud-init[1245]: Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.

从其他消息的内容来看,这cloud-init件事似乎来自我的托管服务,所以这很可能不是由于升级而是由于重新启动,我将与支持人员聊天。

答案2

如果您没有自行更改 SSH 配置或主机密钥,则可能是以下情况之一:

  • 客户更改了密钥(重新安装软件或手动)
  • 服务器更改了他的密钥(软件重新安装或手动)

所以查看每个操作系统中密钥的修改日期并检查谁被修改了

为了避免这种情况在将来发生,请确保在系统升级期间保留现有的 SSH 主机密钥,然后在升级后使用旧密钥。

答案3

有点奇怪,你以前从未见过这一点,至少在使用协议版本 1 时是这样,因为

协议 1 的前向安全性是通过服务器启动时生成的附加服务器密钥(通常为 768 位)提供的。

(引自man sshd

相关内容