![安全地从远程服务器获取 SSH 指纹?](https://linux22.com/image/533817/%E5%AE%89%E5%85%A8%E5%9C%B0%E4%BB%8E%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%8E%B7%E5%8F%96%20SSH%20%E6%8C%87%E7%BA%B9%EF%BC%9F.png)
我曾经考虑过这个问题,而且我的主机提供带外支持,所以我可以简单地在带外创建密钥指纹,并在从家里连接到该服务器时对其进行比较。
除了带外访问之外,还有其他方法可以验证您所连接的主机确实是您购买的服务器吗?
在实践中如何做到这一点?
答案1
如果我理解正确的话,您问的是除了带外通道之外,是否有其他方法可以安全地检索 ssh 服务器的公钥指纹。严格来说,答案必须是不因为从理论上讲,中间人 (MITM) 可以设置一个伪造的 ssh 服务器,无论你提供什么凭证,它都允许你“登录”。如果你事先不知道真实服务器的公钥指纹,你就无法知道假服务器的指纹不是真实服务器的指纹。
实际上,大多数人认为(在大多数情况下,这是合理的),MITM 真正欺骗他们的可能性非常低,因此他们只是接受第一次连接时呈现给他们的服务器密钥指纹是他们真正的 ssh 服务器的,而不是假的。
当然,随着时间的推移,您与服务器建立许多 ssh 连接,看到 MITM 试图欺骗您的几率会逐渐增加。幸运的是,对于您在第一个连接之后建立的每个连接,服务器的公钥都将存储在您的known_hosts
文件中。因此,如果 MITM做在任何特定的连接尝试期间尝试一些恶作剧(后如果出现第一个情况,你的 ssh 客户端会立即提醒你刚刚收到的服务器密钥与预期的密钥不匹配,并且连接将中止。
总之,如果您有带外手段知道服务器的密钥,那么您应该在建立更新文件的第一个连接时使用它来验证密钥known_hosts
。但即使您没有这样的手段,尽管有一个理论安全风险,风险可能非常小。