从多台计算机通过 SSH 无密码登录

从多台计算机通过 SSH 无密码登录

我正在尝试理解通过 SSH 进行无密码登录的概念。据我所知,您需要在要连接的计算机上创建 SSH 密钥对。然后将公钥复制到要连接的服务器。到目前为止一切顺利吗?如果我的基本知识有误,请纠正我...

我猜想这会导致只能从我的计算机(创建密钥对的地方,因为私钥存在于那里)进行无密码登录。

但是,如果我想从多台计算机使用无密码登录到同一台服务器,该怎么办? 您是否需要在每台将连接到服务器的计算机上创建密钥对,并将每个公钥复制到服务器? 我该怎么做?

答案1

您既可以对多台机器执行该程序,也可以复制私钥。根据您的个人安全要求和工作流程,其中一种方法可能比另一种方法更简单或“更好”。

如果您的私钥被泄露,您需要将其从文件中删除authorized_keys和/或撤销。此外,根据您的工作流程,您需要为多台机器注册一个新密钥。每台机器一个密钥可能更安全,但也可能增加管理开销。

答案2

我为每个主机使用一个密钥,因此公钥的注释中包含生成它们的主机的名称。您可以使用它ssh-copy-id来快速安装密钥。

如果您在许多不同的主机上工作,最好为其配备一张智能卡和一个读卡器(有 USB 钥匙扣格式的读卡器,里面有足够的空间来容纳卡),这样您就可以轻松随身携带私钥,并确保它不能被复制。

答案3

有多种“无密码”方法,有些需要复制密钥,其他则有不同的选项:

SSH CA:您设置一个 SSH CA 并将 CA 公钥分发给服务器。然后使用 SSH CA 的私钥签署您想要允许访问信任 CA 的系统的公钥。这有许多好处:

  • 无需反复分发附加密钥
  • 您可以发布定时签名密钥来限制密钥对的有效性和暴露,而无需在目标服务器上进行任何更改
  • 您可以通过向签名添加额外参数(例如允许哪些用户名)来限制用户可以执行的操作

缺点是,如果您对公钥进行无限期的签名,那么撤消该签名的唯一方法是在每个单独的系统上创建新的 CA 或将特定公钥列入黑名单。

其他选项:Kerberos。设置起来更加复杂(但由于 FreeIPA 等系统将其打包得非常好,因此更容易)。您无需到处登录,只需登录一次即可获得 Kerberos 票证。然后可以使用此票证对各种系统(如网站、文件共享和 SSH 服务器)进行身份验证。

您自己的选择:

使用简单的密钥对(一个私钥和一个公钥)。要么将私钥复制到您要连接的每个系统,将公钥复制到您要连接的每个系统,要么为每个系统创建唯一的密钥对,并将每个公钥复制到您要连接的每个系统。

相关内容