authorized_keys的扩展程度如何?


11

如果我正在使用类似gitolite的东西来处理访问控制,则authorized_keys的扩展程度如何?这意味着如果我说有50,000个用户,那么性能将是什么样(我猜不是很好)。有哪些选择?

更新: 我决定自己做一些测试(首先应该做的)。我编写了一个简单的脚本来生成SSH密钥并将其添加到authorized_keys文件中。我的计算机不是那么快,所以我只生成了8,061个密钥,然后将自己的密钥添加到最后,文件最终为3.1MB。然后,我添加了一个文件的git存储库,并运行了git clone 3次:

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

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


您是否希望单个服务器具有50000个模拟用户,或者具有零星访问权限的总共50000个用户?
Mxx

零星访问。我在问SSH服务器的性能,该服务器必须在每次登录时搜索具有50,000个密钥的authorized_keys文件。
杰里米

3
authorized_keys具有5万个密钥的文件只有25MB左右。当然,这将完全缓存到文件系统缓冲区中。我以为在文件中找到密钥的时间与实际使用该密钥对用户进行身份验证的时间相形见。
cjc

Answers:


7

您实际上可以在GitHub上看到效率如何。这么多的键不会造成很大的瓶颈。

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

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

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


2
同意OP应仅使用其硬件测试50K密钥文件。我不确定GitHub是否是一个很好的例子:谁知道他们在后端做什么?就我们所知,它们有一个自定义的sshd,用于将authorized_keys存储在Redis中。
cjc

也许可以,但是他们对正在开展的工作非常清楚,其他使用gitolab为公共git存储库提供服务的大型站点也没有提及。当然不值多少钱,但我还没有提到它。
vgoff

Gerrit拥有经过优化的ssh密钥查找,声称它应该比Gitosis更快。我不知道Gerrit项目。
vgoff

1
我找到了一篇关于github如何工作的文章:github.com/blog/530-how-we-made-github-fast。他们使用修补的SSHD服务器,该服务器从MySQL服务器获取密钥。
杰里米

2
看看上的sshd_config AuthorizedKeysCommand选项
圣路易斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.