无密码 ssh - 基础知识

无密码 ssh - 基础知识

我正在尝试配置无密码ssh。我已经阅读了网上的基本教程,但基本过程让我感到困扰。

假设我坐在客户端并想要登录服务器(恰好位于本地网络上,但这并不重要)。无论如何,对我来说,我想在服务器上生成密钥对并将公钥复制到客户端是有意义的。在服务器上生成密钥对有意义的原因有两个:

  • 您已经登录到想要无密码 ssh 的服务器帐户,以便登录信息可以包含在密钥对中
  • 显然您只需要客户端上的服务器公钥

当通过 ssh 连接到服务器时,客户端会发送在服务器上创建的公钥。公钥与服务器上的私钥匹配并且允许登录。

但我读的每个教程都有在客户端上创建的密钥对,这让我的大脑爆炸。我希望阅读本文不会导致你的脑子要爆炸。我缺少什么?

答案1

我认为退一步看看非对称密码学的工作原理会有所帮助。每个实体(客户端/服务器)都以一对密钥开始 - 一个公钥和一个私钥,它们在数学上相互关联。

在标准过程中,我们将客户端的公钥复制到服务器。当客户端连接时,服务器需要验证客户端是否确实拥有该密钥对(请记住,公钥是公开的,即共享给其他方)。因此,它采用公钥,用它加密随机消息 (*),然后将其发送到客户端。客户端获取加密消息,用其私钥对其进行解密,然后询问服务器 -“嘿,这是消息吗?”。如果服务器同意,则客户端被视为已通过身份验证并且连接将继续。

让我们反转一下场景,看看会发生什么。服务器有一个密钥对,公钥在客户端。需要私钥来证明身份,并且该私钥仅可供服务器使用。因此,客户端可以验证服务器的身份,但反之则不可能。任何获得服务器公钥(这又是公开的)的人都可以连接到服务器。这显然是一个安全问题。

通过让每个客户端使用自己的密钥对和客户端的私钥,服务器可以验证每个客户端的身份。只有将公钥添加到服务器授权密钥列表中的客户端才能进行连接。客户端的私钥通常受到额外的加密层和密码的保护。

相关内容