因此,我们都知道如何通过 SSH 等方式使用公钥/私钥。但是,使用/重复使用它们的最佳方法是什么?我应该永远将它们保存在安全的地方吗?我的意思是,我需要一对密钥来访问 GitHub。我从头开始创建了一对密钥,并使用它一段时间来访问 GitHub。然后我格式化了我的硬盘并丢失了那对密钥。有什么大不了的,我创建了一对新密钥,并配置 GitHub 以使用我的新密钥。或者这是我不想丢失的东西?
我还需要一对公钥/私钥来访问我们公司的系统。我们的管理员向我要公钥,我生成了一对新密钥并交给了他。通常,创建一对新密钥来访问不同的系统更好,还是拥有一对并重复使用它来访问不同的系统更好?同样,创建两对不同的密钥,使用一对从家里访问我们公司的系统,另一对从工作中访问系统,还是只拥有一对并在两个地方使用它更好?
答案1
你绝对应该有单独的私钥每个来源。基本上,这意味着每个私钥通常应该有一个副本(不包括备份)。在入侵一台机器基本上可以访问另一台机器的情况下(例如,如果它们彼此都在),可以使用来自密切相关机器的相同私钥shosts.equiv
。不要在不同领域(例如家庭和工作)的机器上使用相同的私钥,永远不要在两个用户之间共享私钥,也不要共享笔记本电脑和任何其他机器之间的私钥。
在大多数情况下,我认为没有必要为不同的目的地设置不同的私钥。如果一个私钥被泄露,则存储在同一个目录中的所有其他私钥肯定也会被泄露,因此只会增加复杂性,而没有任何安全优势。
如果遵循这些原则,每个密钥对都标识一个(机器、用户)对,从而使授权管理更加容易。
我认为每个来源一个私钥的一般规则有两个例外:
- 如果您有一个无密码密钥,仅允许访问特定机器上的特定命令(例如自动备份或通知机制),则该密钥必须与一般 shell 访问密钥不同。
- 如果某些机器间歇性地连接,您可能会拥有一个旧私钥和一个新私钥,直到您完成新密钥的部署。
答案2
我不知道什么是最好的方法,但我可以知道哪种方法最适合我。
作为系统管理员,我使用不同的密钥以 root 身份访问每个服务器/服务。这样,如果密钥丢失或被盗,我可以将风险限制在一台服务器上,而不需要使用全新的密钥更新我的所有服务。
说到用户,我为每个用户使用不同的密钥。使用该密钥,用户可以作为非特权用户访问所需的服务。这样,我可以轻松地授予或撤销每个用户对单个服务的访问权限。如果用户丢失了密钥,我可以从所有服务中删除它,并限制未经授权访问的风险。
答案3
我相信只要您在私钥上设置密码,您就可以在任何地方使用私钥,这意味着如果您想与几台机器共享您的私钥,比如笔记本电脑 1、2,台式机 1、2,应该没问题。
根据我的经验,我的主要机器是我的台式机,我利用其强大的处理器完成大部分工作,但有时我需要在移动设备上使用我的笔记本电脑,在数据中心进行故障排除等等,因此,我仍然可以登录到任何拥有我的公钥的主机。
答案4
你生成的公钥适用于所有人。它将允许他们 a) 检查真实性 b) 为你加密
私钥是私密的。它只属于您自己。您应该将它备份在某个安全的地方。例如,如果您将它保存在 USB 记忆棒上,您还可以使用安全密码对其进行加密。
公钥是您向他人展示的身份。所以没有问题/最好对一切使用一对密钥,至少在您不想使用明确的新身份时,这样其他人就不会知道那是您。