我想禁用ssh
Ubuntu 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
如果主机密钥发生变化,这也会起作用,并确保不将密钥保存为受信任的,以增加安全性。