有时我可能想使用某人的 gpg 密钥发送消息,但不需要再次使用该密钥。
在这种情况下导入密钥似乎没有必要。
我搜索过,但找不到任何可以实现这一点的线索。每次都要执行 --delete-keys 有点烦人。
答案1
您可以编写一个小的 shell 脚本,复制您的 pubring.gpg 文件,导入密钥,加密文件,然后将原始的 pubring.gpg 文件移回原位。下次这会将其变成一行代码。
#!/bin/sh
cp -a ~/.gnupg/pubring.gpg ~/.gnupg/pubring.gpg-backup
gpg ... # Command to import
gpg ... # Command to encrypt message/file
mv ~/.gnupg/pubring.gpg-backup ~/.gnupg/pubring.gpg
注意:脚本的参数是变量“$1”、“$2”……
编辑:我知道我很久以前就回答过这个问题。我想提一下上面的一个陷阱:在恢复备份之前中断会导致密钥库被更改。我建议将其复制到临时目录中:
#!/bin/sh
gpgtemp="$(mktemp -d gpgtemp.XXXXXXXXXX)"
cp -a ~/.gnupg "$gpgtemp"
gpg --homedir "$gpgtemp/.gnupg" ... # Command to import
gpg --homedir "$gpgtemp/.gnupg" ... # Command to encrypt message/file
rm "$gpgtemp" -rf
答案2
GnuPG 要求将您想要使用的所有密钥导入到密钥环中。
如果您不想将其导入到您的常规密钥环,可以使用另一个(临时)密钥环,甚至是临时的 GnuPG 主目录(这也将绕过任何配置)。
临时钥匙扣
设置--primary-keyring temporary.gpg
为默认使用(并在必要时创建)临时密钥环。它将在您的 GnuPG 主目录中创建(~/.gnupg/temporary.gpg
默认情况下)。您的正常密钥环仍然可用,但导入将转到临时密钥环。根据需要删除它。
例如:
gpg --primary-keyring temporary.gpg --import key.asc
gpg --primary-keyring temporary.gpg --recipient 0xDEADBEEF --encrypt
rm ~/.gnupg/temporary.gpg # can be omitted, not loaded by default
临时 GnuPG 主目录
这还将重置所有配置,可能对测试某些内容有帮助。设置--homedir [folder]
环境变量$GNUPGHOME
,导入密钥,执行任何操作,然后根据需要删除文件夹。
例如:
export GNUPGHOME=/tmp/gnupg # Or apply --homedir on each invocation
gpg --import key.asc
gpg --recipient 0xDEADBEEF --encrypt
rm -r $GNUPGHOME # Can be omitted
unset $GNUPGHOME
GnuPG 对权限非常挑剔,您可能需要对$GNUPGHOME
文件夹应用更严格的权限才能执行所有操作。这可能是保留一些游乐场的一个选择$GNUPGHOME
。