在ssh中禁用StrictHostKeyChecking


14

我正在尝试使用连接到Linux主机ssh并出现以下错误

RSA host key for 10.1.1.20 has changed and you have requested strict checking.

我想重写此方法,但似乎找不到任何选项的组合来执行此操作。

我可能在多年前设置了StrictHostKeyChecking,但不记得如何。

我咨询后得知man ssh,该系统范围的配置文件为,/etc/ssh/ssh_config并且每用户配置文件的默认设置~/.ssh/config都不存在。

编辑为了澄清我的问题,该选项已明确设置。我试图发现

  1. 选项的存储位置(手册页中没有提到的文件,这似乎是错误的)。
  2. 如何更改选项。

我没有在研究如何解决我遇到的问题(我知道我可以编辑known_hosts文件,但是每次尝试新服务器时,这都很乏味)。


这是/etc/ssh_config对我的。
sborsky

@sborsky我也有这个(与男人不同),但是所有选项都被注释掉了。
Milliways

这意味着默认值,根据手册页为ask。更改主机密钥后,除非StrictHostKeyChecking设置为,否则ssh客户端将无法连接no。如果主机密钥不经常更改,建议您从您的主机中删除此主机密钥,~/.ssh/known_hosts而不要更改配置。
sborsky

1
首先,您必须弄清楚为什么更改了它。如果您没有更改它,则可能是MitM攻击,那么您当然不应该允许该主机密钥!
显示名称

旁注-从给定主机的所有记录删除后,.ssh/known_hosts我继续收到警告,直到在另一个名为的文件中发现有问题的行.ssh/known_hosts2。显然OS X两者都使用了
billynoah 18'Aug

Answers:


18

要为当前用户禁用OS X上严格的主机检查,请创建或编辑〜/ .ssh / config并添加以下行:

Host [IP Address] 
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

本地网络中主机的典型示例可能是:

Host 10.1.1.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

根据您对ssh的使用情况,不建议对所有主机禁用严格的主机密钥检查。

如果只想删除10.1.1.20的条目,请使用您选择的编辑器打开〜/ .ssh / known_hosts并删除相应的行“ 10.1.1.20 ssh-rsa public-key $


似乎在没有/ dev / null行的情况下也可以工作。
John2095 '16

6

您可以简单地按需尝试,而无需配置,只需在命令行上即可:

ssh -o StrictHostKeyChecking=no hostname

但是我认为它并不能满足您的所有需求。如果要忽略所有主机密钥检查,则需要将known_hosts文件设置为,/dev/null这样就永远不会存储任何内容:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostname

或在/etc/ssh_config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

第一仍然不允许我连接,但是允许ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostname。我仍然找不到WHERE StrictHostKeyChecking已设置!
Milliways

默认为“是”,因此无需在任何地方进行设置即可。
2015年

文档指出它默认为是
Milliways 2015年

选择一种解决方案将帮助您解决问题;)
Jakuje 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.