为什么 SSH 公钥位于服务器而不是客户端?

Con*_*ser 14 ssh cryptography public-key

我不太明白在服务器上保存公钥背后的理论。在公钥/私钥的密码箱类比中,要解锁爱丽丝的盒子,爱丽丝持有私钥,而公钥则分发给鲍勃。看起来服务器扮演着密码箱的角色,那么为什么它持有公钥呢?

Zor*_*che 24

请记住,服务器确实有一个私钥和公钥,它与您作为用户生成的密钥对完全分开。服务器的私钥通常与服务器配置一起存储,公钥在您尝试连接时由服务器传输。您的客户端将服务器的公钥与您的 known_hosts 文件进行比较。如果使用得当,这可以防止 MITM 攻击。

您拥有个人帐户的私钥。服务器需要您的公钥,以便它可以验证您尝试使用的帐户的私钥是否已获得授权。

所以用你的例子。Bob 和 Alice 都有私钥和公钥。事先共享或作为连接的一部分共享的公钥用于验证由私钥加密的数据是否合法。如果客户端没有公钥,或者有不同的公钥,你会得到一个可怕的警告。如果服务器没有客户端公钥,您将不被允许进入。


小智 5

您作为用户是在您登录时提供您的信息的人。因此,为了授权,您需要私钥,因为服务器会询问任何冒充您的人(尝试使用您的身份登录)名)来证明。

它的工作方式是服务器向您发送一些文本,要求您对其进行加密并使用您的公钥解密。只有拥有您私钥的人才能执行此操作。