SSH 主机密钥似乎正在意外更改

Ben*_*Ben 7 ubuntu ssh hostkey ssh-keys

/etc/ssh/sshd_config在 Ubuntu 12.04 测试服务器上推出了一个新的 Puppet。该配置与之前的配置完全相同,只是删除了以下行:

HostKey /etc/ssh/ssh_host_ecdsa_key
Run Code Online (Sandbox Code Playgroud)

我注意到我从那时开始尝试连接到盒子时遇到了很多类似但不同的错误,例如:“ %hostname%的 RSA 主机密钥已更改,相应 IP 地址%ipaddress%的密钥 未更改。 ”

我认为这是因为我的计算机以前默认使用 ECDSA 密钥,而现在不可用。因此,我将该行添加回sshd_config并重新启动了 SSH。

它并没有完全解决这个问题,从那时起我就遇到了不断的问题。我将能够多次连接到服务器,甚至可能连续几天。然后突然间我开始收到主机密钥已更改的错误并且服务器停止接受我的公钥进行身份验证。

似乎总是一旦我弄乱它一段时间并从不同的位置连接,我将突然能够再次连接到我的公钥并且我不再收到关于可能的中间人的错误攻击。

几天前我尝试重新生成所有 3 个主机密钥(删除它们并运行dpkg-reconfigure openssh-server重新生成它们)。正如预期的那样,我必须删除旧密钥并接受新密钥才能连接。我想也许它当时已经解决了,但现在问题又回来了。

/etc/ssh/自从我上次重新生成它们以来,没有修改任何主机密钥——所以可能会导致我经常无法连接,让我的公钥不起作用,然后最终接受新密钥并让一切重新开始正常工作一阵子?

当事情不正常时(当我收到关于主机密钥更改的错误,然后服务器停止接受我的公钥时),没有任何内容写入服务器的/var/log/auth.log. 这让我想到有时它可能会以某种方式击中不同的机器,但我不知道这是怎么可能的,因为 DNS 条目是正确的并且总是返回相同的 IP 地址。

vor*_*aq7 6

您收到该消息的常见原因有以下三个。
按照概率的粗略顺序,它们是:

  1. 您自己更改了主机密钥,并且没有在客户端计算机上清除或更新它们。
    这是最常见的情况。校验密钥文件并绝对确定它们没有更改。

  2. 您已更改 SSH 配置以提供(或请求)与以前不同的密钥类型。
    例如,您以前想要 RSA 或 DSA 密钥,现在您使用 ECDSA——这是“密钥更改”。
    如果是这种情况,请验证并接受新密钥(或者,如果这不是您想要的,请撤消更改)。
    (听起来您处于第 2 种情况——撤消更改,重新启动 sshd,并验证一切是否按预期工作。如果您在任何地方都没有接受新密钥,撤消更改应该会使错误消失。)

  3. 有人正在做一些令人讨厌
    的事情 SSH 警告您的中间人攻击已经抬起了它丑陋的脑袋。有人正在积极尝试拦截您的通信以窃取您的私钥或做其他您几乎肯定不希望他们做的事情。


如果你已经消除了 1,并且你确定你没有做 2,那么你应该假设 3,直到你能证明不是。这意味着不要登录。-- 当用户无视巨大的警告横幅并将他们的密钥交给攻击者时,世界上所有的 SSH 安全都无济于事。

调查您和您的服务器之间的通道,在您尝试登录时检查服务器的连接日志(来自已知良好的终端),等等——这里有很多执行攻击的方法,我无法一一列举可能的对策和检测策略,但IT 安全部门的人肯定会有一些想法。

  • 你帮我缩小了范围。我进行了一些额外的检查,并意识到 Rackspace 的名称服务器为同一个主机名返回了两个不同的记录。我不知道一个来自哪里,但似乎一个或另一个 IP 将首先返回列表中(似乎是随机的)。我最终找到并消除了流浪 DNS 记录,此后再也没有收到此问题。 (3认同)