Como usar o GnuPG com --passphrase?

Como usar o GnuPG com --passphrase?

Quero escrever um script que execute gpgum arquivo chamado "arquivo" com a senha "teste".

Normalmente, quando eu uso o gpg, normalmente apenas executo gpg -c filee ele me pede a senha. Mas como quero que esse script faça tudo sozinho, gostaria de fornecer a senha como parte do comando.

Agora, quando tento usar: gpg -c file --passphrase test, ele gera:

uso: gpg [opções] --simétrico [nome do arquivo]

Que parece que quer que eu use gpg --passphrase test --symmetric file. Mas se eu fizer isso, aparecerá uma caixa de diálogo solicitando a senha a ser usada; que não é o que eu quero.

Como configuro os argumentos corretamente?

Responder1

No GnuPG, as opções devem preceder os comandos, portanto a --passphraseopção deve vir antes de --symmetric.

Em relação à janela de entrada de pin, que aparece de qualquer maneira (embora você use o --passphrase), provavelmente você já está usando o GnuPG 2, que precisa --batchser usado junto com o --passphrase. Nas páginas de manual:

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

Esteja ciente de que em sistemas multiusuário todos os outros usuários serão capazes de ler sua linha de comando e, portanto, também a senha enquanto o GnuPG é executado. É melhor usar uma das outras --passphrase-*opções para ler um arquivo ou canal.

Responder2

O uso --pinentry-mode loopbackfunciona com --passphrase& --passphrase-[file/fd]e permitirá inserir novas informações, em caso de conflitos de nome de arquivo, por exemplo:

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

diferente --batchdisso irá falhar rapidamente, dizendo...failed: File exists


Se você adicionou originalmente a opção detalhada ( -v) primeiro, deveria ter visto algo como:

$ 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 claramente que não gostou de colocar -c( --symmetric) em primeiro lugar.


Considero o comportamento do gpg2 de ignorar --passphraseopções, a menos que seja acompanhado --batchcomo um bug.

Responder3

Se gpg --versionfor relatório v2, você precisará adicionar a --batchopção.

Com base na saída da sintaxe, você provavelmente está usando v1 e, nesse caso, deseja:

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

Observe que a ordem das opções não é importante; entretanto, qualquer arquivo precisa ser o último argumento.

Responder4

Você pode usá-lo assim:

gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c

Além disso, o uso de lote não é um bug, está escrito na documentaçãoaqui:

captura de tela dos documentos

informação relacionada