SSH 密钥的集中管理系统?

SSH 密钥的集中管理系统?

我们正在寻求切换到基于密钥的 SSH 登录管理,并想知道是否有任何密钥管理系统可以让我们集中管理全球的访问密钥。

理想情况下,系统应该允许每个客户端发出密钥,并在需要时撤销它们,并动态更新服务器机器密钥。

有人知道这样的系统吗,无论是商业的还是开源的?

注意:需要澄清的是,我们需要为大量云服务器(类似 EC2)和少量服务用户进行密钥管理。我猜下面建议的 LDAP + 补丁可能是可行的方法。

答案1

有很多方法可以做到这一点。LDAP 密钥存储已经被提及过几次了,我也这样做过,而且就其实际效果而言,它是有效的。不过,LDAP 有其自己的管理奇特之处,需要花些时间去学习。

我非常喜欢简单、强大的服务器,这些服务器对诸如管理员身份验证之类的简单操作具有最小的外部网络依赖性,因此我倾向于更强大的 SSH 密钥分发策略——我让配置管理系统来处理它。每个人的公钥都保存在配置管理系统中,无论用户需要登录到哪里,都会添加他们的密钥。配置系统还知道删除未指定的密钥,因此当有人离开或其密钥发生变化时,只需删除密钥配置,然后在下次运行配置系统时,密钥就会被删除。

答案2

密钥对应由用户生成。

用户保留私有部分 - 您永远不应该看到它。如果您以可以读取/使用的形式拥有某人的私钥,那么您的安全措施就错了。

公共部分将提供给您(通过任何您想要的机制:Web 表单、电子邮件、CD 上的提供),您可以按照自己的意愿集中管理。有些地方将公钥存储在 LDAP 中。其他一些地方则authorized_keys使用其部署系统推送文件。


在我的环境中,需要 shell 访问权限的用户会向我提供他们的公钥。这些密钥被添加到我们的 LDAP 系统中,并sshd通过以下方式查阅每个用户列出的公钥来验证他们的身份:LDAP 公钥补丁
当有人需要添加额外的密钥或撤销现有密钥时,他们会通知管理员,我们会处理。最终,随着我们的扩展,我将实施一个允许人们轮换自己的公钥的系统。

我们的每个站点都有一对 LDAP 服务器,通过 LDAP 复制与我们的主服务器同步,从而保证每个位置的数据一致(且可访问)。


我所描述的一切都可以用开源软件完成。也有商业产品可以做同样的事情。
您需要更彻底地研究可用的选项,并决定哪一个最适合您的环境。如果您有进一步(更具体)的问题,我们可能会更有帮助。

答案3

密钥对不应在任何地方生成,而应在每个用户的计算机上生成。私钥之所以被这样命名,是有原因的。

话虽如此,我还是看到了某种集中式用户公钥存储库的用例。一种选择是将公钥存储在 OpenLDAP 中 - 最新版本的 OpenSSH 可以从 LDAP 中读取密钥。

答案4

我知道这是一个稍微老一点的问题,但是谷歌在寻找这种东西时返回的答案相当高。

对于那些正在寻找除 LDAP 之外的解决方案的人来说,我刚刚发现了“SKM”项目: https://sites.google.com/site/jeromeboismartel/code-s-corner/ssh-key-management-with-skimp

相关内容