Search code examples
bashcrongnupg

gpg encrypt file without keyboard interaction


I am running next command within a crontab to encrypt a file and I don't want a keyboard interaction

echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT

but I have this answer:

gpg: C042XXXX: There is no assurance this key belongs to the named user

pub  40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <user@email.com>
 Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX
      Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) 

Solution

  • As David intimated, the problem here is that gpg doesn't trust the public key you're using to encrypt. You could sign the key as he explained.

    An alternative--especially if the key might be changing occasionally--would be to tack on --trust-model always to your gpg command.

    Here's the relevant bit from the man page:

    --trust-model pgp|classic|direct|always|auto
    
         Set what trust model GnuPG should follow. The models are:
    
         pgp    This is the Web of Trust combined with trust signatures as used in
                PGP 5.x and later. This is the default trust model when creating a
                new trust database.
    
         classic
                This is the standard Web of Trust as used in PGP 2.x and earlier.
    
         direct Key validity is set directly by the user and  not  calculated  via
                the Web of Trust.
    
         always Skip  key  validation  and  assume that used keys are always fully
                trusted. You generally won't use this unless you  are  using  some
                external  validation  scheme.  This  option  also  suppresses  the
                "[uncertain]" tag printed with signature checks when there  is  no
                evidence that the user ID is bound to the key.
    
         auto   Select  the  trust  model depending on whatever the internal trust
                database says. This is  the  default  model  if  such  a  database
                already exists.