Comment utiliser GnuPG avec --passphrase?

11

Je veux écrire un script qui exécutera gpgun fichier appelé "fichier" avec la phrase secrète "test".

Normalement, lorsque j'utilise gpg, je lance généralement juste gpg -c fileet 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 génère:

utilisation: gpg [options] --symétrique [nom de fichier]

Quelles coutures comme ça veut que j'utilise gpg --passphrase test --symmetric file. Mais si je le fais, une boîte de dialogue s'affiche et me demande la phrase secrète à utiliser; ce n'est pas ce que je veux.

Comment configurer correctement les arguments?

Jens Erat
la source

Réponses:

7

Dans GnuPG, les options doivent précéder les commandes, donc l' --passphraseoption doit précéder --symmetric.

En ce qui concerne la fenêtre de saisie des broches, qui apparaît de toute façon (bien que vous l' --passphraseutilisiez), vous utilisez probablement déjà GnuPG 2, qui doit --batchêtre utilisé avec --passphrase. Depuis les 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, et donc également la phrase secrète pendant l'exécution de GnuPG. Mieux vaut utiliser l'une des autres --passphrase-*options à la place pour lire à partir d'un fichier ou d'un canal.

Jens Erat
la source
Ce que vous dites, c'est que mon ordre des arguments --passphraseet --symmetricétait en fait correct, mais je ne manquais que l' --batchargument? Parce que ça n'a pas marché pour moi. J'ai essayé d'ajouter --batchavant et après, juste au cas où. De plus, je ne sais pas comment vérifier si ce que j'utilise est GPG 2, mais la partie que vous avez collée qui dit Note that this passphrase is only used if the option --batch has also been given.n'existe pas dans ma manpage.
Quel système d'exploitation / distribution utilisez-vous? gpg --versiondevrait donner des informations sur la version de GnuPG que vous utilisez. Avez-vous un gpg2binaire?
Jens Erat
J'utilise Xubuntu 14.04., La version de gpgest 1.4.16. Inspiré par vos commentaires, j'ai découvert que gpg2 était développé séparément, alors je l'ai installé et essayé, mais il se plaint queno valid OpenPGP data found. processing message failed: Unknown system error
Jens, vous êtes super génial et répondez à de nombreuses questions avec d'excellentes réponses, mais vous vous trompez sur un point: "les options doivent précéder les commandes, donc l'option --passphrase doit précéder --symmetric." Pas vrai du tout.
rsaw
@rsaw: Vous avez partiellement raison - pour --symmetricet --passphrase, la commande ne semble pas pertinente, mais essayez de la --exportdéfinir --armorpar la suite. Généralement, les options doivent précéder les commandes, qui est également l'ordre défini dans les pages de manuel.
Jens Erat
2

Si les gpg --versionrapports v2, vous devez ajouter l' --batchoption.

Sur la base de la sortie de syntaxe que vous utilisez probablement v1, auquel cas vous souhaitez:

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.

rsaw
la source
1

Utiliser --pinentry-mode loopbackfonctionne avec --passphrase& --passphrase-[file/fd], et vous permettra de saisir de nouvelles informations, en cas de conflit de nom de fichier par exemple:

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

contrairement à --batchcela va rapidement échouer, en disant...failed: File exists


Si vous aviez initialement ajouté l'option verbose ( -v) en premier, 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'aimait pas quelque chose à propos de mettre -c( --symmetric) en premier.


Je considère le comportement de gpg2 d'ignorer les --passphraseoptions sauf s'il est accompagné d' --batchun bogue.

Xen2050
la source