我的操作系统是 Ubuntu 20.04.2 lts。
我正在从目录 noup1 创建一个 tar 存档,其中包含文件和子文件夹,tar cf no1.tar noup1
用 加密gpg -c no1.tar
。现在我有了一个no1.tar.gpg
档案。
如果我尝试用 解密它gpg -d no1.tar.gpg
,我会在终端中看到很多波浪线字符,而且它不起作用。
如果我只是使用gpg no1.tar.gpg
而不使用-d
标志,我会得到一个输出,提示“没有给出命令。试着猜测......”
gpg: WARNING: Kein Kommando angegeben. Versuche zu raten was gemeint ist ...
gpg: AES256 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
现在档案已解密。一切正常!但如何以及为什么?
另一方面,如果我使用-d
标志并将结果导入 tar,它就会成功!
gpg -d no1.tar.gpg | tar xf -
所以我想知道:
是什么 ”猜测命令“ 被处决了?
为什么该-d
标志不起作用,但如果通过管道传输到 tar 中则可以起作用,即使所有相关教程都指示使用gpg -d <archive-name>
而不是解密 tar 档案gpg <archive-name>
?
是否可能我缺少一些包或者我的 gpg 配置有问题?
答案1
根据手册页对于 gpg,
-d
解密命令行中给出的文件(如果未指定文件,则解密为 STDIN)并将其写入 STDOUT(或使用 --output 指定的文件)。如果解密的文件已签名,则还会验证签名。此命令与默认操作不同,因为它从不写入文件中包含的文件名,并且它会拒绝不以加密消息开头的文件。
因此 -d 工作正常,但它正在将文件解密到 STDOUT,这就是您看到一堆垃圾输出的原因。这是 .tar 文件的编码数据,因此它毫无意义。
如果您希望将其解密为文件而不是 shell 输出流,请使用--output <filename>
或将输出重定向到文件。
我相信(我看不懂德语)当你在文件上运行命令时,我认为它运行了相当于
gpg -d no1.tar.gpg --output no1.tar