因此,我们都知道如何通过SSH等使用公钥/私钥。但是,使用/重用它们的最佳方法是什么?我应该将它们永远保存在安全的地方吗?我的意思是,我需要一对密钥才能访问GitHub。我从头开始创建了一对,并用了一段时间来访问GitHub。然后,我格式化了硬盘并丢失了这对。没什么大不了的,我创建了一个新对,并配置了GitHub以使用我的新对。还是我不想丢失的东西?

我还需要一对公钥/私钥才能访问我们的公司系统。我们的管理员问我我的公钥,我生成了一对新公钥并交给了他。通常,创建一个新的对以访问不同的系统更好还是拥有一对并重用它来访问不同的系统更好?同样,创建两个不同的对并使用一个在家中访问我们公司的系统,另一对从工作中访问系统更好,还是只拥有一对并在两个地方使用它呢? >

评论

这不是直接回答您的问题,但建议也为每个键设置密码短语。理想情况下,为每个密钥使用单独的密码短语(使用密码管理器)。原因如下:如果私钥遭到破坏(笔记本电脑被盗,计算机被黑客入侵),那么您可能需要一段时间才能对密钥进行暴力破解,并且可以在拥有它的所有计算机上替换公钥。 ,在攻击者可以之前。来源:help.ubuntu.com/community/SSH/OpenSSH/…

#1 楼

每个来源绝对应该有单独的私钥。基本上,这意味着每个私钥通常应该有一个副本(不计算备份)。在紧密关联的机器基本上可以让您访问另一机器的情况下(例如,如果它们位于彼此的shosts.equiv中),可以使用与紧密相关的机器相同的私钥。不要在不同领域(例如家庭和工作场所)的计算机上使用相同的私钥,不要在两个用户之间共享私钥,也不要在笔记本电脑和任何其他计算机之间共享私钥。

在大多数情况下,我看不出针对不同目的地具有不同私钥的意义。如果私钥被泄露,存储在同一目录中的所有其他私钥也肯定也会被泄露,因此会增加复杂性,没有安全性好处。对可以标识一对(机器,用户)对,这使授权管理更加容易。

我可以想到每个来源的单个私钥的一般规则的两个例外:


如果您有一个无密码的密钥,该密钥只​​能访问特定计算机上的特定命令(例如,自动备份或通知机制),则该密钥必须与常规的shell访问密钥不同。计算机间歇性地连接,您可能在新的私钥旁边有一个旧的私钥,直到您完成新密钥的部署为止。

评论


这就是我一直使用密钥对的方式。我不明白为什么GitHub提倡在其安装说明中生成新的密钥对。我忽略了这一点,并使用了我的标准密钥对。我认为他们是保守的。

–toolbear74
11年11月23日在16:14

好的,所以您说“不要在不同领域的计算机上使用相同的私钥”,但是如果DNS根据您的位置将给定的主机名解析为任一计算机,该怎么办?如果不共享私钥,当我尝试通过ssh或rsync到该主机名时会收到警告或失败,因为ssh混淆了相同主机名具有两个单独的密钥。

–迈克尔
18年4月18日在18:02

@Michael我不明白您所描述的场景中用户密钥可能存在什么问题,这就是该线程所要解决的问题。 SSH会对主机密钥感到困惑,但是作为用户,您看到的是主机的公钥,而不是主机的私钥,并且共享主机的私钥很危险–我只建议主机完全相同(冗余)万一其中一个失败),甚至可能到那时也不会。

–吉尔斯'所以-不再是邪恶的'
18年4月18日在18:30

喔好吧。似乎两者之间并没有很多明显的区别,只是假设您知道正在谈论哪个。

–迈克尔
18年4月18日在18:42

@JSBach每个领域具有单独的密钥可以使您定义更细的权限(存储在低安全性领域A上的密钥允许在A的机器之间使用,但是登录到B需要更强的身份验证因子)并允许您撤销它们分别(领域A受到威胁,但我仍然可以从B登录到C)。 SSO是您登录到最高安全性的系统,然后可以在其他地方登录的情况。我不知道他们看到每个用户拥有多个密钥会有什么风险。这将是信息安全性的主题。

–吉尔斯'所以-不再是邪恶的'
18年6月6日在12:35

#2 楼

我不知道什么是最好的方法,但是我可以确定是哪种方法。

作为系统管理员,我使用不同的密钥以root用户身份访问每个服务器/服务。这样,如果密钥丢失或被盗用,我可以将风险限制在一个服务器上,而无需使用全新的密钥来更新我的所有服务。每个人的关键。使用该密钥,用户可以以非特权用户身份访问所需的服务。这样,我可以轻松地为每个用户授予或撤消对单个服务的访问权限。万一用户松开密钥,我可以将其从所有服务中删除,并限制未经授权访问的风险。

评论


+1我将与老板讨论新的密钥使用政策;-)每个服务器/服务听起来比每个网络都更加安全

– Diskilla
2010-09-16 18:14



#3 楼

我相信只要在上面加了密码,就可以在任何地方使用私钥,这表示如果您想与几台机器共享私钥,例如笔记本电脑1、2,台式机1、2应该很好。

从我的经验来看,我的主要计算机是台式机,我使用其强大的处理器来完成大部分工作,但是有时我需要在移动设备上使用笔记本电脑,在数据中心中进行故障排除等。 ,我仍然可以登录到拥有公钥的任何主机。

评论


在此处阅读最佳答案。你这样做是错的。不是您不能那样做,但您不应该那样做。

– PhilT
13年7月14日在5:52

看不清楚为什么所有的反对票。例如,大学网络通常具有一个联网的主目录,因此,即使在您使用的笔记本电脑上,用户也可以在任何地方使用相同的私钥。只要您不通过Internet复制未加密的内容,那么我认为如果您了解这种风险就可以了。这样也更方便,不必因为登录到其他计算机而将公共密钥添加到2,000个不同的位置。

–阿斯范·卡兹
17年4月19日在10:27



推荐,因为您不应该失去这个答案的代表。这是个人喜好,显然每个服务和机器都使用单独的密钥最终可以为您提供更多控制权,但是有时这只是浪费时间,具体取决于您的用例。

–丹尼尔(Daniel Dewhurst)
18年7月9日在8:41

#4 楼

在我公司,我们使用这些特定于用户的密钥。这意味着第二种情况。用户拥有自己的密钥,并且该密钥用于他用来连接公司系统的每台机器。我的意见是对一个系统使用一个密钥。这意味着您需要在连接到特定网络的每台计算机上使用此密钥。对于您的情况,这将是GitHub的一键和公司系统的一键。因此,如果您的管理员再次询问您,我会给他与上次相同的密钥。不是新的。
但是,我不知道这些密钥是否有通用的使用策略,从那时起我就做错了。那肯定是可能的;-)

#5 楼

您生成的公钥适用于所有人。它将允许他们
a)检查真实性
b)为您加密

私钥是私有的。这是您应该在安全的地方备份的密钥。例如,如果将其保存在USB记忆棒上,也可以使用安全密码对其进行加密。

公钥是您对他人的身份。一个密钥对,至少在您不想使用显式新身份的地方,所以其他人都不知道是您。

评论


谢谢,但是您的回答基本上与我的问题无关。请参阅@Diskilla的答案。

–βξhrαng
2010-09-16 14:13