Question Comment utiliser GnuPG avec --passphrase?


Je veux écrire un script qui fonctionnera gpg un fichier appelé "fichier" avec la phrase secrète "test".

Normalement, quand j'utilise gpg, Je viens juste de courir gpg -c file et il me demande la phrase secrète. Mais comme je veux que ce script fasse tout seul, je voudrais fournir la phrase secrète dans le cadre de la commande.

Maintenant, quand j'essaie d'utiliser: gpg -c file --passphrase test, il produit:

utilisation: gpg [options] --symmetric [nomfichier]

Quelles coutures comme il veut que je utilise gpg --passphrase test --symmetric file. Mais si je le fais, une boîte de dialogue apparaît pour me demander la phrase secrète à utiliser. ce qui n'est pas ce que je veux

Comment puis-je configurer les arguments correctement?


10
2017-09-12 21:24


origine




Réponses:


Dans GnuPG, les options doivent précéder les commandes, donc les --passphrase l'option doit venir avant --symmetric.

En ce qui concerne la fenêtre d’entrée des broches, elle apparaît quand même (bien que vous utilisiez --passphrase), vous utilisez probablement déjà GnuPG 2, qui nécessite --batch être utilisé avec --passphrase. A partir des pages de manuel:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. 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.

Sachez que sur les systèmes multi-utilisateurs, tous les autres utilisateurs pourront lire votre ligne de commande, ainsi que la phrase secrète pendant l'exécution de GnuPG. Mieux vaut utiliser l'un des autres --passphrase-* options au lieu de lire dans un fichier ou un tuyau.


5
2017-09-13 11:10



Ce que vous dites, c'est que mon ordre du --passphrase et --symmetric les arguments étaient effectivement corrects, mais je ne manquais que le --batch argument? Parce que ça n'a pas marché pour moi. J'ai essayé d'ajouter --batch à la fois avant et après, juste au cas où. En outre, je ne sais pas comment vérifier si ce que j'utilise est GPG 2, mais la partie que vous avez collé qui dit Note that this passphrase is only used if the option --batch has also been given. n'existe pas dans mon man page.
Quel système d'exploitation / distribution utilisez-vous? gpg --version devrait donner des informations sur la version de GnuPG que vous utilisez. As tu un gpg2 binaire? - Jens Erat
J'utilise Xubuntu 14.04., La version de gpg est 1.4.16. Inspiré par vos commentaires, j'ai découvert que gpg2 est développé séparément, donc je l'ai installé et essayé, mais il se plaint que no valid OpenPGP data found. processing message failed: Unknown system error
Tu es super génial et réponds à beaucoup de questions avec de bonnes réponses, mais tu as tort sur un point: "les options doivent précéder les commandes, donc l'option --passphrase doit précéder --symmetric." Pas du tout. - rsaw
@rsaw: Vous avez partiellement raison - pour --symmetric et --passphrase, la commande ne semble pas être pertinente, mais essayez de --export et définir --armor ensuite. Généralement, les options doivent précéder les commandes, qui sont également l'ordre défini dans les pages de manuel. - Jens Erat


Si gpg --version rapports v2, vous devez ajouter le --batch option.

Basé sur la sortie de la syntaxe, vous utilisez probablement v1, auquel cas vous voulez:

gpg --passphrase PASS -c --no-use-agent FILE

Notez que l'ordre des options n'est pas important; Cependant, tout fichier doit être le dernier argument.


2
2017-09-14 03:41





En utilisant --pinentry-mode loopback marche avec --passphrase Et --passphrase-[file/fd], et vous permettra d'entrer de nouvelles informations, en cas de conflits de noms de fichiers, par exemple:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

contrairement à --batch cela va vite échouer, en disant ...failed: File exists


Si vous aviez à l'origine ajouté l'option verbeuse (-v) D'abord, vous devriez avoir vu quelque chose comme:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

indiquant assez clairement qu'il n'a pas aimé quelque chose à propos de mettre -c (--symmetric) premier.


Je considère le comportement de gpg2 d'ignorer --passphrase options à moins d'être accompagnés par --batch comme un bug.


0
2017-12-29 04:46