如何加速 ssh-keygen

如何加速 ssh-keygen

我们正在使用基于 beaglebone 的定制板。

在其中一个 init 脚本中,我们正在生成 ssh 密钥,但生成 ssh 密钥大约需要 7 秒。我们如何加快生成 ssh 密钥的过程?

从 ssh 教程中我们了解到 ssh-keygen 等待足够的熵来生成 ssh 密钥。

我们如何在生成 ssh 密钥之前创建足够的熵?

任何建议/指示都会有帮助

答案1

我不确定这是否适用于 Beaglebone,但它可以在没有适当随机源的虚拟机上运行,​​因此您的里程可能会有所不同

在 Linux 上,/dev/random使用内核维护的熵池来生成随机性。有两种方法可以加速熵的生成:

  • 生成大量 IO,你可以使用dd if=/dev/hda1 of=/dev/nullhda1用你的磁盘替换)
  • 将额外数据写入/dev/random,例如dd if=/dev/hda1 of=/dev/random。但是,这会降低池中的随机性。最好使用音频源来写入/dev/random

答案2

从你的评论来看,

当我生成密钥时,我得到“+--[RSA1 2048]----+”,所以我想它是 2048 对吗?

听起来你的启动过程除了生成 SSHv2 密钥外,还生成了 SSHv1 密钥。所以你最终至少生成了RSA 密钥(可能还有 DSA 密钥和 ECDSA 密钥)。

如果关闭 SSHv1 密钥生成,时间可能会缩短一半。(SSH 协议第 1 版存在一些严重问题,无论如何都不应该使用。)

答案3

我曾经有过转帖的经历(嗨,Google/DDG/Bing(?!) 用户!),但我会避免使用 dd 技巧。当你可以使用专门为此设计的东西时,熵产生源就不那么热了!

有几个因素会导致密钥、DH 参数等生成速度变慢。

首先是硬件。在撰写本文时,Beaglebone Black 上的 CPU 是(根据他们的网站) 一个 ”Arm Cortex-A8、3D 图形、PRU-ICSS“。现在,我知道你说你正在使用定制的 Beaglebone-基于主板,但我离题了——可能是相同的 CPU(或更早的运行,因为我正在回答一个 4.5 年前的问题)。对于重度加密来说不是最好的,但你可以用你拥有的东西来凑合。你可以看看是否有一个使用 HRNG 的主板外围设备(硬件随机数生成器)。 HNRG 将极大地加快速度。

第二个,正如其他答案所暗示的那样,是可用的熵。密钥生成使用/dev/随机代替/dev/u(无阻塞)随机的这是一件好事。/dev/random 可以产生更好的随机性(代价是阻塞)。这意味着系统将等待以获得更多的熵,然后从中产生随机性。如果你使用的是无头服务器,而且是硬件有限的无头服务器,而且是硬件有限且没有 HNRG 的无头服务器,是的。这将需要长的时间。空闲的服务器不会产生足够的“数字噪音”能够快速的产生熵!

那么有安全意识的男孩或女孩该做什么呢?

为什么,有g, 当然!哈格德是一个运行的守护进程HAVEGE 算法它使用一些巧妙的数学运算来创建数字噪音,并且被广泛推荐用于此类事情。它应该非常容易安装;我不知道任何现代发行版的存储库中没有它。

相关内容