Come usare GnuPG con --passphrase?


11

Voglio scrivere uno script che eseguirà gpgun file chiamato "file" con la passphrase "test".

Normalmente, quando uso gpg, di solito corro gpg -c filee mi chiede la passphrase. Ma poiché voglio che questo script faccia tutto da solo, vorrei fornire la passphrase come parte del comando.

Ora, quando provo ad usare gpg -c file --passphrase test:, genera:

utilizzo: gpg [opzioni] - simmetrico [nome file]

Quali cuciture come vuole che io usi gpg --passphrase test --symmetric file. Ma se lo faccio, si apre una finestra di dialogo che mi chiede la passphrase da usare; che non è quello che voglio.

Come posso impostare correttamente gli argomenti?

Risposte:


7

In GnuPG, le opzioni devono precedere i comandi, quindi l' --passphraseopzione deve precedere --symmetric.

Per quanto riguarda la finestra di immissione dei pin, che si apre comunque (anche se si utilizza --passphrase), probabilmente si sta già utilizzando GnuPG 2, che richiede --batchdi essere utilizzato insieme --passphrase. Dalle pagine man:

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

Tenere presente che su sistemi multiutente tutti gli altri utenti saranno in grado di leggere la riga di comando, e quindi anche la passphrase mentre GnuPG viene eseguito. Meglio usare una delle altre --passphrase-*opzioni invece di leggere da un file o pipe.


Quello che stai dicendo è che il mio ordine degli argomenti --passphrasee --symmetricera effettivamente corretto, ma mi mancava solo l' --batchargomento? Perché non ha funzionato per me. Ho provato ad aggiungere --batchsia prima che dopo, per ogni evenienza. Inoltre, non riesco a controllare se quello che sto usando è GPG 2, ma la parte che hai incollato che dice Note that this passphrase is only used if the option --batch has also been given.non esiste nella mia manpagina.

Quale sistema operativo / distribuzione stai usando? gpg --versiondovrebbe fornire informazioni sulla versione di GnuPG in uso. Hai un gpg2binario?
Jens Erat,

Sto usando Xubuntu 14.04., La versione di gpg1.4.16. Ispirato dai tuoi commenti, ho scoperto che gpg2 è stato sviluppato separatamente, quindi l'ho installato e provato, ma mi lamento cheno valid OpenPGP data found. processing message failed: Unknown system error

Jens sei fantastico e rispondi a molte domande con ottime risposte, ma ti sbagli su un punto: "le opzioni devono precedere i comandi, quindi l'opzione --passphrase deve precedere - simmetrica". Per niente vero.
Risposta

@rsaw: hai in parte ragione - per --symmetrice --passphrase, l'ordine non sembra essere rilevante, ma prova a --exportdefinirlo in --armorseguito. In generale, le opzioni devono precedere i comandi, che è anche l'ordine definito nelle pagine man.
Jens Erat,

2

Se gpg --versionsegnala v2, è necessario aggiungere l' --batchopzione.

In base all'output della sintassi che probabilmente stai utilizzando v1, nel qual caso desideri:

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

Si noti che l'ordine delle opzioni non è importante; tuttavia, qualsiasi file deve essere l'ultimo argomento.


1

L'uso di --pinentry-mode loopbackfunziona con --passphrase& --passphrase-[file/fd]e ti permetterà di inserire nuove informazioni, ad esempio in caso di conflitti di nome file:

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

a differenza di --batchciò fallirà rapidamente, dicendo...failed: File exists


Se inizialmente avevi aggiunto prima l'opzione verbose ( -v), avresti dovuto vedere qualcosa di simile a:

$ 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]

indicando abbastanza chiaramente che non gli è piaciuto qualcosa di mettere prima -c( --symmetric).


Considero il comportamento di gpg2 di ignorare le --passphraseopzioni a meno che non sia accompagnato da --batchun bug.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.