87 votes

gpg chiffrer le fichier sans interaction clavier

J'exécute la commande suivante dans une crontab pour chiffrer un fichier et je ne souhaite pas d'interaction clavier

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

mais j'ai cette réponse:

 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) 
 

84voto

ryran Points 820

Comme David l'a laissé entendre, le problème ici est que gpg ne fait pas confiance à la clé publique que vous utilisez pour chiffrer. Vous pouvez signer la clé comme il l'a expliqué.

Une alternative - en particulier si la clé peut changer de temps en temps - consisterait à virer de bord sur --trust-model always à votre commande gpg.

Voici le bit pertinent de la page de manuel:

 --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.
 

47voto

Antony Points 2414

Voici ma solution, basée sur gpg2 (mais je parie que vous pouvez appliquer une technique similaire à gpg)

 $ gpg2 --edit-key {recipient email address}  
> trust
> 5 (select 5 if you ultimately trust the key) 
> save
 

Cela indiquera à gpg2 de faire pleinement confiance à la clé, de sorte que vous puissiez chiffrer sans invite

11voto

David Souther Points 4414

Le hack approche:

echo -n PASSPHRASE > phrase
chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase
yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase

Le problème sous-jacent est que la clé que vous avez pour l'UTILISATEUR n'est pas signé. Si vous avez confiance, vous pouvez vous inscrire avec

gpg --edit-key USER sign

Il va probablement poser quelques questions, en fonction de votre configuration. Le faire une fois, alors vous devriez être bon d'aller dans votre crontab. Je voudrais encore vous recommandons d'utiliser la solution que j'ai proposé, en mettant le mot de passe dans un fichier séparé et de faire qu'il ne soit lisible que par l'utilisateur qui commande s'exécute. Si vous faites cela, vous pouvez tuer l' yes |, et viens de le chiffrer ligne.

0voto

lanes Points 285

Ou signez la clé (après avoir vérifié l’empreinte digitale, bien sûr):

 gpg --sign-key <recipient email address>
 

Après cela, vous faites pleinement confiance à la clé.

   1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X