authorized_keys 的扩展性如何?

Jer*_*emy 11 ssh git gitolite

如果我使用 gitolite 之类的东西来处理访问控制,authorized_keys 的扩展性如何?意思是如果我说 50,000 个用户,性能会是什么样的(我猜不是很好)。有哪些替代方案?

更新: 我决定自己做一些测试(我本来应该做的)。我编写了一个简单的脚本来生成 SSH 密钥并将它们添加到一个 authorized_keys 文件中。我的电脑没有那么快,所以我只生成了 8,061 个密钥,然后将自己的密钥添加到最后,文件最终为 3.1MB。然后我添加了一个带有一个文件的 git 存储库并运行了 git clone 三次:

With 8,061 keys (Mine is at the end of the file)
real    0m0.442s
real    0m0.447s
real    0m0.458s

With just a single key:
real    0m0.248s
real    0m0.264s
real    0m0.255s
Run Code Online (Sandbox Code Playgroud)

性能比我想象的要好得多。对于 50,000+ 的一大组密钥,我仍然对任何可能更快更有效的替代方案非常感兴趣。

vgo*_*off 7

你实际上可以在 GitHub 上看到它有多快的效率。使用这么多键不会造成重大瓶颈。

尽管正如他们在 2009 年的博客中记录的那样,他们已经改变了从数据库中检索 ssh 密钥的方式。帽子提示:@Jeremy

但是,您创建了超过 8k 个密钥,您可以使用 50k 个密钥再次测试。

这些键不需要是有效的键,只需编写一个生成器并写入文件,然后将您的添加到末尾即可。

  • 同意 OP 应该只用他的硬件测试一个 50K 密钥文件。我不确定 GitHub 是否是一个很好的例子:谁知道他们在后端做什么?据我们所知,他们有一个定制的 sshd,用于在 Redis 中存储authorized_keys。 (2认同)
  • 查看 sshd_config 上的 AuthorizedKeysCommand 选项 (2认同)