使用外部密钥解密被加密的文件GPG

问题描述 投票:8回答:3

我使用gpg,现在我要解密文件encryptd文件。

有什么办法解密文件,而不需要进口的秘密文件?

我们在一个叫key.sec文件的密钥;我们可以通过秘密文件gpg作为参数(当我们运行从decrypt命令行bash命令)解密所述加密文件时使用?或者,我们必须导入然后密钥解密加密的文件吗?

encryption gnupg
3个回答
11
投票

您必须添加密钥的钥匙圈。从gpg(1)文档:

   --no-default-keyring
          Do not add the default keyrings to the list of
          keyrings. Note that GnuPG will not operate without any
          keyrings, so if you use this option and do not provide
          alternate keyrings via --keyring or --secret-keyring,
          then GnuPG will still use the default public or secret
          keyrings.

你可以--import --no-default-keyring --secret-keyring temporary导入密钥,解密内容时使用--secret-keyring temporary,然后删除~/.gnupg/temporary.gpg文件时,即可大功告成。但是,这只是一个变通。


5
投票

你必须导入密钥使用它,但这个秘密密钥由GnuPG的2.x版的管理方式发生了变化。有是处理密钥访问gpg-agent守护程序和它的使用是从2.1版本强制性的。

这里是您可以快速创建一个临时的钥匙圈与被包含在一个文件中的密钥来解密方式:

$ mkdir -m 700 ~/.gnupg-temp
$ gpg --homedir .gnupg-temp --import key.sec
$ gpg --homedir .gnupg-temp -d an_ecrypted_file

如果你想在事后清理,停止代理,并删除目录:

$ gpg-connect-agent --homedir .gnupg-temp KILLAGENT /bye
$ rm -r ~/.gnupg-temp

曾经有一个选项--secret-keyring关于这对于2.1版本的documentation有这样一段话:

这是一个过时的选项和忽略。所有的秘密密钥存储在下面的GnuPG主目录中的私有密钥,v1.d目录。

所述qazxsw POI目录(qazxsw POI或POI qazxsw内)是拥有和由代理操作。


1
投票

在OP穆罕默德的目标似乎是保持他的公钥和密钥分开。毕竟,做我们想要跟上它被用来对数据进行加密密钥?因此,穆罕默德和其他10,650+(当时我写这篇文章)有兴趣,如果/如何是可能的。确实是这样,这是你怎么做:

该公开面向主机只有两个键:无论是公开密钥

  1. 你的GPG公共密钥用于加密数据
  2. 在的.ssh / authorized_keys中的SSH公钥来促进非交互式登录。

往返使用公开与秘密密钥分离加密的文件: 当用秘密密钥在主机上执行将获取从通过scp DMZ主机的加密后的文件,并喷出所述GPG以下的bash片断解密标准输出返回到DMZ主机到一个文件中,以便它可以被读取/时运行。此代码测试和已知的正常工作:

private-keys-v1.d

请注意,您仍然会提示输入密码一次解密开始。但是,一旦密码被提供,该脚本将继续和解密的GPG流注入到DMZ主机上的文件。

而且不要忘记做解密文件一旦需要它的内容是可读的已完成的操作的--homedir

所以,是的,很可能在那里发生的加密和你的密钥安全地藏在离开一个主机DMZ之外替你保守秘密密钥除了公开访问的主机。 HTH-泰伦斯Houlahan

© www.soinside.com 2019 - 2024. All rights reserved.