我正在尝试将我的 gpg 密钥从一台机器复制到另一台机器。
我愿意:
gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key
Run Code Online (Sandbox Code Playgroud)
将文件移动到新机器,然后:
gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)
gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]
Run Code Online (Sandbox Code Playgroud)
对我来说一切都很好,但是:
$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible
Run Code Online (Sandbox Code Playgroud)
因此,错误消息表明该文件已使用 [SUB-ID] 加密,密钥导入似乎表明已导入该文件。(两个消息中的 [SUB-ID] …
尝试在我的 Debian Stretch 服务器中接收密钥时,出现此错误:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
Executing: /tmp/apt-key-gpghome.4B7hWtn7Rm/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.4B7hWtn7Rm/S.dirmngr' failed: No such file or directory
gpg: keyserver receive failed: No dirmngr
Run Code Online (Sandbox Code Playgroud) 过期时更新 gpg 密钥对的最佳方法是什么,该方法的原因是什么?
密钥对已经由许多用户签名并在公共服务器上可用。
新密钥应该是过期私钥的子密钥吗?
是否应该由旧签名(我可以尝试编辑密钥并将到期日期更改为明天)?
新钥匙应该在旧钥匙上签名吗?
我通过执行以下命令使用 GPG 生成了密钥
gpg --gen-key
Run Code Online (Sandbox Code Playgroud)
现在我需要将密钥对导出到一个文件中;即分别是private.pgp和 的私钥和公钥public.pgp。我该怎么做?
我希望以下命令可以在不要求密码的情况下提取 gpg 文件:
  gpg --passphrase 1234 file.gpg
Run Code Online (Sandbox Code Playgroud)
但它要求输入密码。为什么?
这也有相同的行为:
  gpg --passphrase-file passfile.txt file.gpg
Run Code Online (Sandbox Code Playgroud)
我将 Ubuntu 与 gnome 3 一起使用,并记住它在 Fedora 中运行
我正在尝试添加用于使用 CPG 安装程序的公钥。但是我对此很陌生,但是我发现的每个命令都给了我同样的错误:
gpg --keyserver keyserver.ubuntu.com --recv-keys 94558F59
gpg: requesting key 94558F59 from hkp server keyserver.ubuntu.com
gpg: keyserver timed out
gpg: keyserver receive failed: keyserver error
Run Code Online (Sandbox Code Playgroud)
这怎么可能看起来我在某种封锁背后,这使得无法建立到密钥服务器的连接。我查看了许多 OP 问题并尝试了所有我能找到的命令,但没有任何效果。以前有人遇到过这个问题吗?
当我列出一个键的详细信息时,我会得到如下输出:
$ gpg --edit-key SOMEID
pub [..] created: [..] expires: [..]   usage:SC
[..]
sub [..] created: [..] expires: [..]   usage: E
Run Code Online (Sandbox Code Playgroud)
甚至usage: SCA在另一个键上(主键部分)。
用法字段中的这些缩写是什么意思?
我可以得出:
S -> for signing
E -> for encrypting
Run Code Online (Sandbox Code Playgroud)
但是C和A呢?
还有更多吗?
在哪里可以找到这样的东西?
apt-key自从我切换到 Ubuntu 17.04 以来,通过系统地添加 gpg 密钥失败了(不过我怀疑它是否直接相关)。Spotify 的 repo 密钥示例:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
Executing: /tmp/apt-key-gpghome.wRE6z9GBF8/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
gpg: keyserver receive failed: No keyserver available
Run Code Online (Sandbox Code Playgroud)
如果我删除hkp://前缀,同样的事情。
上下文:我使用CNTLM来处理本地公司代理。设置环境变量(在 中/etc/environment):
$ env | grep 3128
https_proxy=http://localhost:3128
http_proxy=http://localhost:3128
ftp_proxy=http://localhost:3128
Run Code Online (Sandbox Code Playgroud)
/etc/apt/apt.conf已配置(apt命令工作正常):
$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://localhost:3128";
Acquire::https::Proxy "http://localhost:3128";
Acquire::ftp::Proxy "http://localhost:3128";
Run Code Online (Sandbox Code Playgroud)
最后,指定的密钥服务器似乎可以访问:
$ curl keyserver.ubuntu.com:80
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head> …Run Code Online (Sandbox Code Playgroud) ssh-add -l向您显示已添加的所有 ssh 密钥ssh-add ~/.ssh/id_yourkey。我如何用 gpg 和 gpg-agent 做类似的事情,换句话说,让它显示缓存键的列表?
我全新安装了 Arch Linux 并导入了我备份的 gpg 私钥。作为健全性检查,我跑了:
gpg —list-keys
Run Code Online (Sandbox Code Playgroud)
除了uid现在显示的内容外,一切都显示正常:
uid [ unknown ] User < user@useremail.com >
Run Code Online (Sandbox Code Playgroud)
当我在全新安装之前首次创建此密钥时,它显示为:
uid [ ultimate ] User < user@useremail.com >
Run Code Online (Sandbox Code Playgroud)
为什么在将其导入全新安装后会从[ ultimate ]变为[ unknown ]?
提前致谢。