尝试生成GPG密钥(使用gpg --gen-key)时,它可能会在发出消息后挂起:
没有足够的随机字节可用。请做一些其他的工作 操作系统有机会收集更多熵! (需要278个字节)
gpg(GnuPG)1.4.16
Ubuntu 14.04.2 LTS
答案 0 :(得分:3)
原来这是一个已知问题: https://bugs.launchpad.net/ubuntu/+source/gnupg/+bug/706011
我通过安装rng-tools解决了这个问题。
即sudo apt-get install rng-tools
然后gpg --gen-key
按预期工作。
答案 1 :(得分:2)
虽然rng-tools可行,但由于它不能提供真正的熵,因此不建议这样做。请参阅此处的讨论:https://bugs.launchpad.net/ubuntu/+source/gnupg/+bug/706011
对于对此感到沮丧的用户,我发现这些内容在没有鼠标/桌面的服务器上有用。
1)完成创建GPG密钥的过程。如果它挂起等待更多熵,请转到下一步。
2)您可以通过打开终端并键入(这将每秒查看该文件)来观察您的系统有多少熵:
watch -n1 cat /proc/sys/kernel/random/entropy_avail
3)打开第三个终端以生成熵。您可以尝试各种方法来尝试增强熵。以下是我注意到的一些事情,增加了熵足以使gpg工作。请注意,这有点随机(没有双关语)。有时做某事会增加熵;但是当我再次这样做时,却没有:
从互联网上获取一个大文件
wget http://us1.php.net/get/php-7.2.2.tar.bz2/from/this/mirror
做一些向终端打印很多东西的东西:
ls -R /
sudo find /folder/with/lots/of/files/ -type f | xargs grep 'simple string that shows up in lots of files'
4)如果您正在做的事情不会增加entropy_avail,那么请尝试其他方法。
答案 2 :(得分:0)
sudo apt install haveged
这将安装haveged
服务,该服务收集熵并更有效地填充/dev/random
。安装haveged
后,您无需运行任何其他命令,它将自动启动服务。 systemctl status haveged
验证服务是否正在运行。您也可以cat /dev/random
来证明它可以连续提供值。在我的测试中,gpg --gen-key
在10秒钟内完成安装haveged
的情况。
如果您不想安装任何东西,则可以通过其他方式生成熵,但是它比haveged
慢得多(在我的测试中慢10倍)。 gpg --gen-key
运行时,在另一个终端上运行此命令:
while true; do
# print entropy available
cat /proc/sys/kernel/random/entropy_avail
# write a 1 MB stream of zeros to /tmp/foo
# "conv=fdatasync" flushes the disk cache
dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done
# one liner
while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done