从同一个工作站/本地服务器对两个服务器使用相同的私钥进行无密码登录是否可行/是一种好的做法?

从同一个工作站/本地服务器对两个服务器使用相同的私钥进行无密码登录是否可行/是一种好的做法?

我有两个网站。一个网站是另一个网站的克隆。当我检查sshd_config两个网站上的文件时,它们完全相似,除了一个用作authorized_keys标识,另一个用作Known_keys标识,我希望这不是问题,因为路径是相应地定义的,显示了公钥的位置和文件名。

我想知道为什么我不能使用同一台机器的相同私钥(该机器的公钥在两台服务器上都存在)登录。

我是否遗漏了一些信息?或者这根本不可能?

答案1

这个问题实际上是三个独立的问题。

问题 1:

是否可以使用相同的密钥对通过 SSH 访问两个或更多个服务器?

答案1:

是的,这是可能的,许多人(包括我自己)经常这样做。没有理由将它限制在一台服务器上。我们假设您谈论的是客户端密钥对,而不是服务器证书。客户端密钥对验证客户即尝试访问 SSH 会话的机器。您绝对可以重复使用您的客户端密钥对,并且一台服务器不会知道您的密钥对已在其他服务器上使用。

问题2:

是否推荐使用相同的密钥对通过 SSH 访问两个或更多个服务器?

答案2:

取决于你问谁,以及你的安全计划有多严格。还有风险使用相同的两个或多个远程主机的密钥对。这些风险是超越对一个主机使用密钥对的名义风险。

任何获得您的私钥(以及私钥密码,如果适用)的人都可以访问全部您的私钥验证的系统。然后问题就转移到攻击者知道您的私钥被验证的所有服务器的主机名,以及每个将您的公钥视为授权密钥的主机上的用户帐户。这增加了您的私钥被泄露时可能造成的潜在损害被盗。

请注意不是如果有人获得仅有的你的民众key:不管你有多在意,你最好把你的 SSH 公钥放在你的主页上。你甚至可以安全地把它发布在你的问题中,只是为了好玩,绝对没有任何安全隐患。它被称为民众因为某种原因。

如果您有任何理由怀疑您的私钥不是完全安全的,并且您担心如果两个系统都受到损害,损失会更大,那么您可以创建两个私钥。,如果您将两个私钥存储在同一系统上,并且它们没有密码、密码相同,或者密码本身存储在同一个地方的某个地方(一张纸、LastPass 等),那么拥有两个单独的密钥对实际上并没有增加任何安全性。但如果您使用全盘加密并且拥有一个安全良好的客户端系统,那么您的私钥和密码被盗的风险相对较低。

顺便说一句,如果你使用私钥而没有任何密码,那么你最好不要在你的系统上做任何价值超过几美元的事情。如果你正在开展任何类型的官方业务,无论是商业业务还是其他业务,在我看来,绝对必要使用强大且独特的密码没有写下来任何地方获得访问任何有价系统的私钥。如果您处理的是客户的个人信息(信用卡号等),请将“绝对必要”设置为 72 pt 字体,并加粗 10 倍。如果您处理的是政府机密信息,请将“绝对必要”设置为 5000 pt 字体,并加粗 5000 倍。

问题 3:

为什么我的公钥认证不起作用?

答案3:

这取决于您的具体设置。您没有向我们提供任何有关它为何不起作用的具体细节。我们需要具体信息。错误消息、详细日志(但请省略密码、用户名和 IP 地址!)以及您用于 SSH 客户端和 SSH 服务器的软件和版本列表,以及两个系统的操作系统和版本。

然而,我强烈怀疑它不起作用的一个原因是你在其中一个系统上使用错误的文件。known_keys不是用于公钥认证;它是用于 SSH客户(文件所在的客户端known_keys)缓存它所连接的服务器的公钥。您应该authorized_keys在两个系统上都使用。(感谢回答您问题的另一个人比我早几秒发布了这个事实 :))

答案2

known_keysauthorized_keys完全不同的东西。

authorized_keys您必须将与用于访问服务器的私钥相匹配的公钥放入此文件中。它应该位于您想要访问的服务器上。

known_keys是一个存储远程服务器指纹的文件,这样您就知道,如果您再次尝试连接该服务器,它确实是您期望的服务器。这是为了防止中间人攻击,有人可能会伪造远程服务器的主机名或 IP 地址来窃取您可能提供的信息,让您以为您连接到了正确的服务器。当您尝试连接到新的地方时,会自动创建或更新此文件,因此请注意,它与 SSH 操作相关,因为它客户。如果您在服务器上看到此文件,则您可能尝试从它连接到其他地方。

相关内容