![ssh - 如果本地网络上有多台具有完全相同名称的计算机,会发生什么情况?](https://linux22.com/image/223404/ssh%20-%20%E5%A6%82%E6%9E%9C%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%8A%E6%9C%89%E5%A4%9A%E5%8F%B0%E5%85%B7%E6%9C%89%E5%AE%8C%E5%85%A8%E7%9B%B8%E5%90%8C%E5%90%8D%E7%A7%B0%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%8C%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%EF%BC%9F.png)
在我的本地网络中,我可以使用以下命令连接我同事的计算机:
然后,如果我正确输入他们的密码,我就可以进入。
这让我想到,如果我们的网络中存在另一台具有完全相同的名称和相同密码的计算机,会发生什么情况。那会发生什么呢?
答案1
您的问题与 ssh 无关,但更多的是如何解析主机名。最有可能与组播 DNS根据您本地的网络情况。
假设您有两台具有相同名称的计算机(这不太可能;见下文),ssh 会警告您,因为服务器公钥不匹配。 ssh 服务器向您发送一个公钥来识别自己的身份。第一次连接时,ssh 会询问您这是否确实是您想要连接的服务器,然后将公钥存储在一个名为已知主机。
从那一刻起,您的 ssh 客户端就知道“friend-CASPER-NIRVANA.local”的公钥是什么。如果您稍后以相同的名称连接到另一台计算机,该计算机将向您发送不同的公钥,并且 ssh 将警告您潜在的危险中间人攻击并拒绝连接。
对于名称解析:如果网络中的所有设备都遵守,则不会出现重复的名称标准。然后,如果发现冲突,他们会选择不同的名称。
如果您的网络中有恶意客户端,很可能第一个宣布其名称的客户端会获胜,但您不应该指望它。