gpg --gen-key 在 centos 6 上获得足够的熵时挂起

sto*_*ain 62 gpg centos6

尝试为服务器生成密钥。

gpg --gen-key
Run Code Online (Sandbox Code Playgroud)

我们需要生成大量随机字节。在素数生成期间执行一些其他操作(在键盘上键入、移动鼠标​​、使用磁盘)是个好主意;这使随机数生成器有更好的机会获得足够的熵。

它只是挂在那里。

还有一个错误:

无法连接到`/root/.gnupg/S.gpg-agent':没有这样的文件或目录

之后似乎消失了:

gpg-agent --daemon
GPG_AGENT_INFO=/tmp/gpg-4c5hyT/S.gpg-agent:1397:1; 导出 GPG_AGENT_INFO;

#GPG_AGENT_INFO=/tmp/gpg-4c5hyT/S.gpg-agent:1397:1; export GPG_AGENT_INFO;
gpg --gen-key
...
Run Code Online (Sandbox Code Playgroud)

但同样,它挂在“......获得足够的熵”。

没有“++++++++++++++++++++++++++++++++++++++++++”的从论坛帖子看起来应该是预期的,因为生成了密钥。

我试过重新安装软件包,但似乎一切都取决于 gpg。

我也读过其他人在 centos 6 上也遇到过这个问题(而 centos 5 工作正常)。

没有什么了不起的/var/log/*

关于从这里去哪里的任何想法?

谢谢。

Joh*_*ohn 63

gpg --gen-key命令像这样挂起时,登录到另一个shell并执行以下命令:

dd if=/dev/sda of=/dev/zero
Run Code Online (Sandbox Code Playgroud)

(此命令基本上从您的硬盘驱动器读取并丢弃输出,因为写入/dev/zero将什么也不做。)

几秒/分钟后,密钥生成命令应该完成。

  • 我实际上尝试过这个,但由于我没有 root,我无法直接访问 /dev/sda。对我有用的是`find / | xargs 文件` (26认同)
  • 你的意思是`of=/dev/null`吗? (4认同)
  • 我更舒服地运行`find / | xargs 文件`而不是`dd if=/dev/sda of=/dev/zero`,一分钟后就完成了。谢谢! (3认同)
  • 惊人的。谢谢你。我不敢相信我错过了手册的那部分:/ (2认同)
  • 每次获取不同的熵会是一个更好的主意。如果您的系统一直在用完熵,那么您的配置就会出现严重问题,或者您很快就会用完熵(到了您应该拥有硬件 RNG 的地步)。如果您需要定期获得更多熵,可以在有效的地方下载更多信息,例如 [Humboldt-Universität's Quantum RNG](http://qrng.physik.hu-berlin.de/)。 (2认同)

gol*_*lja 26

要获得更可靠的解决方案,您可以安装与随机数生成器相关的实用程序,这将确保您始终拥有足够的随机字节。

yum install rng-tools
Run Code Online (Sandbox Code Playgroud)

然后编辑/etc/sysconfig/rngd并添加EXTRAOPTIONS="-r /dev/random"

启动服务

 service rngd start
Run Code Online (Sandbox Code Playgroud)

瞧,你从此过着幸福的生活:)

  • 如果您不想启动该服务,您可以在安装了 rng-tools 后以 root 身份简单地运行 rngd -r /dev/random 。您的密钥生成将立即起飞。 (7认同)
  • 但这本身不会产生熵。 (2认同)

小智 12

https://gist.github.com/franciscocpg/1575d286548034113884c3185ca88681

打开一个 ssh 会话 sudo apt-get install rng-tools 在另一个 SSH 窗口中打开 gpg --gen--key 返回到您的第一个 SSH 会话并运行 sudo rngd -r /dev/urandom 让它运行直到 gpg 生成您的密钥!

然后你可以杀死rngd sudo kill -9 $(pidof rngd)


Soh*_*rty 11

之前给出的两个评论都很好。但这只是我的 2 美分。

RHEL/centos 6 和熵的问题在于它们是无滴答的内核。因此,这些内核本身不会产生足够的熵。您必须连接一些键盘或什至一些鼠标移动或使用 dd 如上所述。

rngd 守护进程很棒,大多数商业实体都使用它。

但是,我见过的最好的方法是使用专用的 TPM 设备。它们是非常昂贵的小型硬件。你把它们和 rngd 使用来自硬件源的随机真熵。据我所知,富士通有一些不错的 TPM 设备。

是的,这三种方法几乎涵盖了熵部分。


Dav*_*kow 7

扭转其他反应,但至少有一个衬垫而不是根。

((find / | xargs file) &> /dev/null &); gpg2 --gen-key --batch --passphrase-file output-key.txt key-gen-options.txt
Run Code Online (Sandbox Code Playgroud)

密钥生成选项包含

Key-Type: 1
Key-Length: 2048
Subkey-Type: 1
Subkey-Length: 2048
Name-Real: myuser
Name-Email: myuser@email.com
Expire-Date: 0
Run Code Online (Sandbox Code Playgroud)

Output-key.txt 包含我的超级密钥。