PGP:没有足够的随机字节。请做一些其他工作,使操作系统有机会收集更多的熵


70

设置:虚拟机上的Ubuntu Server,具有6核和3GB RAM。

当我试图生成asymmetric key pair通过GPG这样的gpg --gen-key。我收到以下错误:

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy!

我试着用谷歌搜索一下。这就是我所意识到的,我需要启动另一个终端并输入cat /udev/random->它随机生成一系列随机生成的值以增加熵。

我看不到这里有任何变化 watch cat /proc/sys/kernel/random/entropy_avail

而且仍然会给我同样的错误



感谢您的链接,但是,我在ubuntu
中看

我试着做gpg --gen-key --no-use-agent。它仍然不起作用
user1524529

8
我相信,“神奇”,使得它的工作是rngd -f -r /dev/urandom
ta.speot.is

1
该文档另有建议。
ta.speot。是2012年

Answers:


83

运行以下命令:

find / > /dev/null

这有助于我快速完成密钥生成。


1
您必须基本上运行一个长时间运行的OS命令,该命令会生成系统熵。这样的命令必须与另一个终端窗口中的“ gpg --gen-key”命令并行运行。可以生成熵的命令之一是上面的find命令,甚至是以下答案中给出的“ sudo aptitude install haveged”命令。
Binita Bharati

1
与结合使用时,在远程连接上效果很好,ctrl + Z先将其移动到后台,然后再使用fg命令将其返回到前台。
MS Berends

在精益的ubuntu服务器上,find /仅花费了几秒钟,几乎没有将50位添加到entropy_availhaveged工作了。或者,如果您不想安装任何东西,则可以使用md5sum方法
wisbucky

65

尝试安装haveged,这是一个守护进程,可以帮助系统为您的密钥生成随机数。

sudo aptitude install haveged


4
谢谢。GPG安装完成后立即完成。
pommes

3
这在rng-tools甚至无法运行的情况下也有效:“找不到要使用的硬件RNG设备”。我猜是因为我在虚拟设备上,尚无此类设备可用。我已经失去了安装Haved之前尝试做的事情的数量。谢谢。
谁问了

cat {dev / random> / dev / null&都不起作用,应力命令也不起作用,但避险确实起作用了!!!
murungu '16

3
这应该是最好的答案。我的GPG一代不到一秒钟就完成了。find / > /dev/null没有为我工作。
summerNight

1
@MatthewCole,使用进行安装后,您无需运行任何命令apt install havegedman haveged--run Default is 0。您可以使用验证systemctl status haveged以检查服务是否正在运行。
wisbucky

15

步骤1首先在shell上运行,然后使其运行ls / -R

步骤2现在尝试生成密钥,它将完成

有关更多信息,请访问 http://alsdias.blogspot.jp/2012/11/gpg-not-enough-random-bytes-available.html


2
对于任何想知道它为何有效的人:作为物理设备的硬盘驱动器在运行中固有一定的随机性。每当使用磁盘驱动器时,Linux内核都会利用这一点来增加一点熵。ls / -R会创建大量磁盘活动,因此会产生很多随机性。
沃尔夫冈·

在精益的ubuntu服务器上,ls -R /仅花费了几秒钟,几乎没有将50位添加到entropy_availhaveged工作了。或者,如果您不想安装任何东西,则可以使用md5sum方法
wisbucky

8

在观察/proc/sys/kernel/random/entropy_avail价值时,我尝试了不同的技巧。但是,尝试对整个磁盘进行MD5哈希处理确实使我的系统对类固醇有所熵,而无需安装额外的软件包。

find /dev/disk/by-uuid/ -type l | xargs md5sum


这绝对是要走的路。
cptHammer

fyi,该命令的本质作用是md5sum /dev/sda,但它是从符号链接中查找实际的磁盘设备名称的/dev/disk/by-uuid
wisbucky

在精益Ubuntu的服务器,find /并且ls -R /只用了几秒钟,只增加了大约50位entropy_avail。一分钟后,它就成功了,它填满了entropy_avail2000位,并且我能够--gen-key不挂机运行。如果您不介意安装软件包,则效果haveged也很好。
wisbucky

5

尝试安装rngd。如果您的CPU相当现代,它将内置一个硬件随机数生成器,并且rngd将使用它来生成足够的熵。

当心人们告诉你跑步rngd -r /dev/urandom。尽管这样做可以消除您的错误,但可以通过伪造熵来实现,并导致密钥不安全。


仅供参考,您在ubuntu上使用进行安装sudo apt install rng-tools。它将自动启动服务systemctl status rng-tools。您不需要运行任何其他命令。但是,rng-tools由于它可能无法访问CPU TRNG,因此在VM上不能很好地工作。haveged在VM上工作得更好。
wisbucky

3

在新标签中将鼠标移动30秒左右,然后尝试以下操作:

base64 /dev/urandom

这将开始在屏幕上打印出随机代码。几分钟后,将生成足够数量的伪随机数据以完成密钥生成。


2

这是我找到的解决方案

我必须做 gpg --gen-key --no-use-agent

之后,在另一个终端我开了火 cat /dev/random

对我来说幸运的是最后工作了:)


2

尝试$cat /proc/sys/kernel/random/entropy_avail 在命令行上运行(在另一个终端选项卡中) ,它返回小于100-200的值,然后出了点问题,请安装rng-tools $sudo apt-get install rng-tools

那应该已经解决了这个问题,请检查上一个选项卡,然后找到密钥


0

我做了apt-get install libreoffice和apt-get remove libreoffice *几次。做到了。选择其他一些大型胖程序供自己使用。


0

我尝试解决。我将Fedora 25与gpg1和gpg2一起安装为机器的标准配置。

宣告问题
如果您使用的是Fedora 25 OS,我会在otrust.tmp上看到带有ownertrust的gpg冲突(请删除旧的trustdb.gpg)。并且必须创建新的trustdb.gpg。

请在您的终端命令中遵循此命令。(不必使用root模式)。您可以尝试使用以下命令重新创建trustdb:



cd〜/ .gnupg gpg2 --export-ownertrust> otrust.tmp
rm trustdb.gpg
gpg2 --import-ownertrust <otrust.tmp

那么你可以使用

gpg --list-secret-keys --keyid-format LONG
然后导出为asci格式。
gpg --armor --export“在这里输入您的密钥”


0

在gpg消息末尾,您会看到括号(剩余125个字节)

gpg需要您必须输入的一些随机字节。因此按Ctrl-z并键入不一定有意义的x(括号中的数字)字符的随机集合,例如:dfkheuhasdkjvdaiugekjfhflsdfhuhggskdfjhsjdf

然后执行2或3次,GPG会显示一个答案,告诉您完成了密钥生成:)


0

您可以安装守护程序来收集熵。此命令将安装两个这样的守护程序:

sudo apt-get install haveged rng-tools

我个人会(因为创建它的人)对rng-tools感到吃惊。但是,我宁愿安装两者,因为它们完全不同。


您可能需要添加说明性文字来说明为什么该命令可以解决问题,否则此答案冒着被删除为低质量风险的风险
mdaniel

0
 sudo apt-get install rng-tools to set it up.

然后运行,sudo rngd -r /dev/urandom然后生成密钥。


-2

跑步 $ sudo rngd -r /dev/urandom

然后跑步 $ gpg --user-agent

$ ps -ef | egrep rngd(显示rngd的进程号,例如9999)

然后 $ sudo kill 9999

在Ubuntu 13.04系统上为我工作。


NOOOOOO !!!! 不要运行rngd -r / dev / urandom!这将生成不安全的密钥。尝试仅运行“ sudo rngd”,如果您具有硬件RNG(许多现代CPU可以做到),则可以使用它,或者在这里找到其他答案之一。
克里斯·杰斐逊

@ChrisJefferson为什么这是一个坏主意?
Joost 2015年

这需要不安全地生成的随机数(来自urandom),并使用它们来设置/ dev / random,安全的随机数。如果因为/ dev / random是epmty而这样做,则将生成易于预测的pgp密钥。
克里斯·杰斐逊

-7

只需在Ubuntu下使用另一个随机制造商:

mv /dev/random /dev/chaos && ln -s /dev/urandom /dev/random

然后重试你的gpg命令


2
这会损坏你的系统严重不可见的。您的程序将不再具有安全的随机性源,攻击者更容易猜测新密钥。
Wolfgang
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.