gpg:已被用户取消

gpg:已被用户取消

尝试创建 GPG 密钥,该密钥将用于我的 Centos7 机器上托管的 apt 存储库。我创建了一个新用户“apt”,然后尝试创建密钥,但在最后,它指出我需要一个密码短语,但随后立即关闭,说明已被用户取消。不,不是!

此后,我成功地重复了这些相同的步骤 root 和我的标准用户名,它恰好位于wheels组中。

两个问题:

  1. 对于不同的用途(例如这个 apt 存储库)使用不同的 gpg 密钥是个好主意吗?并且应该将密钥创建为 root 吗?
  2. 为什么我无法为此用户创建 gpg 密钥?我需要先为该用户创建其他密钥吗?

谢谢

[apt@devserver ~]$ gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 1y
Key expires at Thu 12 Jul 2018 04:32:05 PM UTC
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: somename
Email address: [email protected]
Comment:
You selected this USER-ID:
    "somename <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

gpg: cancelled by user
gpg: Key generation canceled.
[apt@devserver ~]$

答案1

至于“被用户取消”错误:GnuPG 尝试确保它直接从终端读取密码,而不是(例如)从标准输入通过管道读取。为此,它会尝试直接打开 tty。不幸的是,文件权限会成为障碍 - tty 设备由您登录的用户拥有。因此只有该用户和 root 可以打开它。 GnuPG 似乎错误地报告了错误,称您已取消(实际上它的权限被拒绝)。

至于您是否应该为存储库拥有一个单独的密钥:是的。我想到了几个原因:

  • 一个存储库可以由多个人维护。他们所有人都需要访问密钥。您显然不想让他们访问您的个人密钥。
  • 处理新包的软件将需要访问密钥。对于许多存储库来说,这意味着您必须在连接互联网的计算机上保持密钥可用。这需要比您个人密钥理想的安全级别更低的安全级别。
  • 如果您自动处理上传,您甚至可能需要存储不带密码的密钥。显然降低了安全性。
  • 如果您的个人密钥遭到泄露,最好只需要撤销它即可。与存储库密钥的泄露相同。它使得撤销受损密钥的成本更低。

使用您的个人密钥来签署存储库密钥是很正常的。

至于以 root 身份运行密钥生成:并不理想(没有充分的理由不要以 root 身份运行),但可能不是真正的问题。

答案2

我今天遇到了这个成立前进的解决方案;安装screen(如果尚未安装)

sudo yum install screen  

然后作为需要生成密钥的用户(通常是运行 apache 的用户)运行 screen,然后运行

gpg --gen-key  

并且密码短语提示将出现在屏幕会话中!然后完成后,输入exit退出屏幕会话。万岁。

答案3

现在回答这个问题可能已经太晚了,但选项之一是 export GPG_TTY=$(tty)让 GPG 知道使用哪个 tty 作为密码提示。

答案4

当我通过 SSH 以 user1 身份登录,使用命令切换到 user2 su - user2,然后尝试生成密钥时,我遇到了同样的问题。要解决该问题,请打开一个新终端,以 user2 身份 ssh 到服务器,然后执行以下命令:

gpg --gen-key

相关内容