~/.ssh/known_hosts
文件?mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$
注意:
..通过一些答案/评论( s)我意识到我的问题有点误导,所以这是预期的行为,所以这很正常(就我而言)背后有一个有效的理由说明为什么我想看到“忽略它”)
#1 楼
您可以使用ssh -o StrictHostKeyChecking=no
暂时关闭对known_hosts
的检查。但是我建议不要这样做。您应该真正检查主机密钥为何已更改。另一种选择是在您的
~/.ssh/config
中为有问题的主机添加特定的条目。如果您有一个特定的主机,该主机每次重新启动时都会生成新的主机密钥,并且由于某种合理的原因而每天重新启动几次,则这可能是有效的方法。Host <your problematic host>
StrictHostKeyChecking no
评论
这是预期的行为),因此很正常(以我为例)
– alexus
2013年12月7日20:22
@alexus如果它是“预期的”,则可以将该选项应用于您希望其发生的特定主机名/ IP。
–克莱里斯-谨慎乐观-
13年12月7日在20:25
@alexus并请记住,如果执行此操作,您将几乎失去ssh提供的所有保护。您可能还使用telnet,因为有人对MITM进行捕获并捕获您的所有流量将是微不足道的。
–迈克尔·汉普顿
2013年12月7日20:44
这不再起作用(至少对于OpenSSH_5.3p1)
–死亡
17年1月12日在16:36
-o StrictHostKeyChecking = no删除使用密码登录的功能。缺少标记是否直接违反允许用户强制行为的UNIX原则?我目前正在尝试使用本地IP登录到本地计算机。主机密钥已更改,因为我重新格式化了该机器。这里的一切都有意义,在这种情况下,没有任何安全风险。
–Wowfunhappy
19-09-26在23:28
#2 楼
要完全忽略POSIX环境中的已知主机文件,请将GlobalKnownHostsFile
和UserKnownHostsFile
选项设置为/dev/null
:ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
设置
StrictHostKeyChecking=no
选项将允许您连接,但是SSH将仍然显示警告:ssh -o StrictHostKeyChecking=no user@host
正如其他人指出的那样,解决潜在的问题可能更好。例如,您可以考虑使用SSH证书身份验证来验证主机。
评论
这可能是比目前最高的答案更好的答案,因为它允许使用密码身份验证,否则该身份验证将被禁用(当然,在输入密码之前,您应该了解自己到底在做什么……)
– VZ。
15年4月8日在21:55
我在这里有些困惑:除了-o GlobalKnownHostsFile = / dev / null -o UserKnownHostsFile = / dev / null选项之外,您还应该不使用-o StrictHostKeyChecking = no吗?-的最终答案是:ssh -o GlobalKnownHostsFile = / dev / null -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking =没有user @ host?
–加百利·斯台普斯
19年11月1日在16:28
我在网上找到的相关文章:shellhacks.com/disable-ssh-host-key-checking
–加百利·斯台普斯
19年11月1日在16:31
-o UserKnownHostsFile = / dev / null(与StrictHostKeyChecking = no结合使用)使我静音警告:远程主机标识已更改,这是在关闭主机后再次打开主机电源时发生的(在本例中为重新生成密钥)。谢谢!
–fabiomaia
20/09/17'8:55
#3 楼
如果您已重新安装服务器,并且标识已更改,则只需从/Users/alexus/.ssh/known_hosts
删除指定的行155,然后继续。如果在不同的专用网络之间切换,则应使用主机名代替,因为ssh客户端还将根据主机名保存密钥。在您的
/etc/hosts
中添加类似的内容:10.52.11.171 server1
10.52.11.171 server2
,然后在连接到子网1时使用
ssh server1
,在连接到子网2时使用ssh server2
。这样,两个服务器都可以具有不同的主机密钥。评论
如果您在两个专用网络之间切换并连接到两个相同的IP,该怎么办?
– alexus
2013年12月7日在22:51
我已经编辑了答案。
–etagenklo
2013年12月7日23:05
@alexus然后您需要IPv6 :)但这在您最初的问题中将是有用的信息。
–迈克尔·汉普顿
2013年12月7日23:06
#4 楼
有人说这是不对的,您不应该这样做,等等,但是我还需要这样做一次又一次地测试几个嵌入式设备。您需要禁用
StrictHostKeyChecking=no
,这是正确的,但是将已知的主机文件重置为/dev/null
。这是一个在远程设备上具有自动登录和ps
的示例。sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'
#5 楼
-o StrictHostKeyChecking=no
仅在known_hosts文件中不存在主机的情况下有效。如果您认为主机密钥可能由于vm cloning而改变,则我认为它更干净(无警告),以强制忽略这些密钥像这样的主机:
# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
ssh-keygen -R ${host_ip}
echo ${host_key} >> ~/.ssh/known_hosts
}
# connect as normal way
ssh root@${host_ip} "hostname"
#6 楼
我的别名:ssh='ssh -q -o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null'
评论
您永远不要100%地忽略此类消息。这样做会使您遭受MITM攻击。
–迈克尔·汉普顿
20/12/31在20:23
#7 楼
登录到所有服务器(如果是RedHat,则登录到rm -f /etc/ssh/ssh_host_*
),然后重新启动SSHD。这将创建不需要忽略的新SSH主机密钥。
我只能想到一个实例,该实例不仅需要在多个服务器上克隆SSH密钥,而且不会引发任何警告。
一个A记录的多个。具有A记录的所有主机都具有相同的键。
评论
这个答案是不正确的。指纹在客户端上是本地的。
– 89c3b1b8-b1ae-11e6-b842-48d705
14年4月14日在21:35
评论
您问错了问题。您不应该“忽略”这个问题。您应该弄清楚发生了什么并解决它。我无法代表用户,但是一个示例是您正在开发自动安装过程(例如kickstart)的情况,您的迭代工作流程涉及构建,连接,测试,修改构建过程以及从一遍又一遍。
@MichaelHampton-由于VMware和VirtualBox会为来宾回收IP地址,因此我一直都能得到这一信息。对我来说,这是正确的问题:)
FWIW我一直在寻找这个答案,因为我的局域网中有一个系统,在该系统中,我使用dropbear(具有不同的主机密钥)在启动过程中输入磁盘加密密码。
@jww这是您的方案的错误问题/解决方案。相反,您应该将SSH配置为忽略IP地址,但仍然检查主机密钥。在此处查看示例