如何在 ssh 中禁用严格主机密钥检查?

如何在 ssh 中禁用严格主机密钥检查?

我想禁用sshUbuntu 11.04 的严格主机密钥检查。该怎么做?

答案1

在您的~/.ssh/config(如果此文件不存在,只需创建它):

Host *
    StrictHostKeyChecking no

这将关闭您连接的所有主机的此功能。*如果您只想将其应用于某些主机,则可以用主机名模式替换。

确保文件权限仅限于您自己访问:

sudo chmod 400 ~/.ssh/config

答案2

与其将其添加到~/.ssh/config所有 Host * 的文件中,不如指定特定的主机更安全。

您还可以在命令行上传递参数,如下所示:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

如果主机密钥尚不存在,它将自动添加到您的 known_hosts 文件中。

如果不匹配,它会显示一个大警告,并且不会更新known_hosts。它还会禁用基于密码的身份验证,以防止 MITM 攻击。但是私钥身份验证仍会自动通过,这可能是您不希望看到的。

答案3

值得指出的是,您的 ssh 配置中的设置:

StrictHostKeyChecking no

这意味着主机密钥仍会添加到 .ssh/known_hosts - 只是不会提示您是否信任它们,但如果主机发生变化,我敢打赌您会收到有关它的大警告。您可以通过添加另一个参数来解决此问题:

UserKnownHostsFile /dev/null

这会将所有这些“新发现”的主机添加到垃圾箱。如果主机密钥发生变化,则不会有任何问题。

如果不提绕过主机密钥上的这些警告,就会有明显的安全隐患——你应该小心,确保你这样做是出于正确的理由,并且你连接的实际上是您要连接的不是恶意主机,因为此时您已经破坏了 ssh 解决方案的大部分安全性。

例如,如果您尝试使用命令行进行设置,完整命令将是:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host

但这样做可能有点愚蠢 - 因为上面的 ssh 配置文件的工作示例在所有情况下都可能更有意义。

答案4

如果您想要一次性禁用,请使用:

ssh -o UserKnownHostsFile=/dev/null

如果主机密钥发生变化,这也会起作用,并确保不将密钥保存为受信任的,以增加安全性。

相关内容