如何以非交互方式使用 gpg 加密文件?

如何以非交互方式使用 gpg 加密文件?

我想编写一个脚本,使用 gpg 和保存在文件中的密码自动加密文件。

我尝试过这个:

gpg -c --passphrase-fd 0 file.txt < pass.txt

当我在 Ubuntu 16.04 服务器上运行它时,它会按预期加密文件。当我在 Ubuntu 18.04 桌面上运行它时,它会使用密码管理器模式对话框要求我输入密码。

我怎样才能跳过对话框并进行非交互式加密?

作为一种解决方法,我使用 openssl 而不是 gpg 来实现此目的:

openssl aes-256-cbc -pass file:pass.txt -e -in file.txt -out file.txt.enc

答案1

我在我的 Lubuntu 18.04 LTS 中进行了测试。

  • 您的命令行对我来说就像您描述的一样失败了。

  • 以下命令行对我有用

    gpg --batch -c --passphrase-file pass.txt file.txt
    

详情请参阅man gpg

   --passphrase-file file
          Read  the passphrase from file file. Only the first line will be
          read from  file  file.  This  can  only  be  used  if  only  one
          passphrase is supplied. Obviously, a passphrase stored in a file
          is of questionable security if other users can read  this  file.
          Don't  use  this  option  if  you  can avoid it.  Note that this
          passphrase is only used if the  option  --batch  has  also  been
          given.  This is different from GnuPG version 1.x.

答案2

或者,如果您不想创建密码文件,例如在编写脚本时,您可以像这样使用它:

gpg --batch --passphrase 'somepass' -c file.txt

相关内容