如何告诉 ssh 不要检查连接主机的真实性?

如何告诉 ssh 不要检查连接主机的真实性?

我经常需要连接到多个 VPN 网络和提供商后面的主机,地址为10.0.0.*192.168.*.也就是说,每个 VPN 网络在连接时都可以自由保留这些范围中的任何一个。因此,我不能假设将地址绑定10.0.0.*到特定主机,因为这取决于我连接到哪个 VPN。或者甚至解析到我的无线路由器!

出于这个原因,我明确禁用了对与上述匹配的这些“内部网”地址的主机的严格密钥检查,在我的~/.ssh/config

Host 192.168.* 10.0.0.*
    StrictHostKeyChecking=no
    UserKnownHostsFile=/dev/null

我通过谷歌搜索以及阅读其他 SO 问题和答案找到了这些说明。

问题是,每次我连接到上面的地址范围时,例如ssh 10.0.0.16,它都会告诉我:

Warning: Permanently added '10.0.0.16' (RSA) to the list of known hosts.

坦白说,这是不正确的,因为无处不在/dev/null(我个人认为它经常被用作丑陋的黑客手段)——在 中添加任何东西都不是永久性的/dev/null,不是吗?它只会弄乱我的终端,每次我在那里看到它,我都会感到很沮丧。

有没有办法让 ssh 忽略指纹而不打印上面令人困惑的消息?我不想alias ssh='ssh 2>/dev/null'这样做,或者做任何类似的事情。我是不是做错了?我有什么选择?也许还有其他选择?/dev/null在我看来,这是一种黑客行为,这就是我受到惩罚的原因。

不想做在我的客户端将节点别名为某些主机名~/.ssh/config,例如这个答案。这是因为两个原因:

  • 我无法简单地将 ssh 配置为使用别名(使用指令Host)来解析到特定地址 fe,正是因为我连接到的不同 VPN 提供商会重复使用这些地址 -10.0.0.15例如,连接到一个 VPN 时可能是一台主机,连接到另一个 VPN 时可能是另一台主机。我应该将我的“拆分”~/.ssh/config为多个,每个 VPN 一个?并相应地使用这些配置文件?

  • 有问题的节点可能是同一内联网上一个相当大的节点组的一部分,现在称之为“云”。节点数量最多可达一百个。我不太清楚如何将多个这样的节点“批量映射”到它们各自的地址?

答案1

我知道这是一个老问题,但我也在寻找答案。因此,对于任何未来的谷歌用户来说,以下是我找到的答案。

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

您可以将其绑定到别名以方便使用。

alias ssh-nocheck='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

ssh-nocheck user@host

找到答案https://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

-编辑:格式化

答案2

通过忽略真实性检查,您将面临中间人攻击,因此您可能需要重新考虑。

您可能需要修改 SSH 配置,方法是将“CheckHostIP”设置为 no,然后在 hosts 文件中为每个主机设置条目,并通过名称而不是主机进行连接。(请注意,我还没有尝试过这个,但我相信它会起作用)。有一个这里也是如此。

相关内容