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

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

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

答案1

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

您有个人帐户的私钥。服务器需要您的公钥,以便验证您尝试使用的帐户的私钥是否经过授权。

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

答案2

您作为用户,有责任在登录时提供您的身份信息。因此,为了获得授权,您需要私钥,因为服务器会要求任何冒充您的人(尝试使用您的名字登录)来证明这一点。

其工作原理是,服务器向您发送一段文本,要求您对其进行加密,然后使用您的公钥对其进行解密。只有拥有您的私钥的人才能执行此操作。

答案3

公钥是一个非常大的数字,它是从您的私钥通过数学方法推导出来的。

它是通过两个数字链接起来的方式得出的,

但私钥不能被只知道公钥的人发现。公钥是你发送给其他方、你想要验证自己身份的人或你想要发送加密消息的人的密钥。公钥并不敏感,不需要保护。它可以公开传播。 [电子邮件保护]

答案4

我想说一个更好的类比是,服务器的公钥是一个带闩锁的开放式锁箱,你可以关闭它(但不能打开),只有服务器才能打开它。真正的问题是你是否信任公钥(这真的是爱丽丝的Box?),无论您从哪里获得它,根据定义它都是公开的,这就是 PKI 的意义所在。

相关内容