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

我不太理解在服务器上保存公钥的理论。 在公钥/私钥的密码箱类比中,为了解锁Alice的方框,Alice将私钥和公钥分配给Bob。 看起来服务器扮演着密码箱的angular色,那为什么要持有公钥呢?

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

你有你的个人帐户的私钥。 服务器需要您的公钥,以便它可以validation您要使用的帐户的私钥是否被授权。

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

你作为用户是提供你login时的信息。所以为了授权,你需要私钥,因为服务器会询问任何冒充你的人(试图用你的login名字)来certificate它。

它的工作方式是服务器向您发送一些文本,要求您encryption并用公钥解密。 只有你的私钥的人可以做到这一点。

它拥有方便的公钥。 否则,你必须创build一个PKI – 类似于SSL CA.

这个想法是当ssh客户端要求你接受远程服务器密钥时检查公钥指纹。

我想说一个更好的比喻是,服务器的公钥是带锁的开放式密码箱,可以closures(但不能打开),只有服务器可以打开它。 真正的问题是,你是否相信公钥(真的是Alice's Box?),无论你从哪里得到它,都是公开定义的,这就是PKI的意思。

公钥是一个非常大的数字,从您的私钥math派生。

它是以这样一种方式得出的,即这两个数字是相连的,

但是只有知道公钥的人才能发现私钥。 公钥是您发送给其他方的信息,您希望向其validation身份或向其发送encryption邮件。 公钥不敏感,不需要保护。 它可以公开传播。 [email protected]