我在云端有一个 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
)