Como usar o GnuPG com --passphrase?

11

Quero escrever um script que execute gpgum arquivo chamado "file" com a frase secreta "test".

Normalmente, quando uso gpg, geralmente apenas corro gpg -c filee ele me pede a senha. Mas como eu quero que esse script faça tudo por conta própria, 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]

Quais costuras gostaria que eu usasse gpg --passphrase test --symmetric file. Mas se eu fizer isso, será exibida uma caixa de diálogo solicitando a senha para usar; o que não é o que eu quero.

Como faço para configurar os argumentos corretamente?

Jens Erat
fonte

Respostas:

7

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

Com relação à janela de entrada de pinos, que aparece de qualquer maneira (embora você use --passphrase), você provavelmente já está usando o GnuPG 2, que precisa --batchser usado junto com --passphrase. Nas páginas do 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 poderão ler sua linha de comando e, portanto, também a frase secreta enquanto o GnuPG é executado. É melhor usar uma das outras --passphrase-*opções para ler de um arquivo ou canal.

Jens Erat
fonte
O que você está dizendo é que minha ordem dos argumentos --passphrasee --symmetricestava correta, mas estava faltando o --batchargumento? Porque isso não funcionou para mim. Eu tentei adicionar --batchantes e depois, apenas por precaução. Além disso, não sei como verificar se estou usando o GPG 2, mas a parte que você colou e diz Note that this passphrase is only used if the option --batch has also been given.que não existe na minha manpágina.
Qual sistema operacional / distribuição você está usando? gpg --versiondeve fornecer informações sobre a versão do GnuPG que você está usando. Você tem um gpg2binário?
Jens Erat #
Estou usando o Xubuntu 14.04., A versão gpgé 1.4.16. Inspirado por seus comentários, eu descobri que gpg2 está sendo desenvolvido separadamente, para que eu instalei ele e tentei sair, mas reclama queno valid OpenPGP data found. processing message failed: Unknown system error
Você é super incrível e responde muitas perguntas com ótimas respostas, mas você está errado em um ponto: "as opções devem preceder os comandos, portanto a opção --passphrase deve vir antes - - simétrica". Não é verdade.
rsaw 14/09/15
@rsaw: Você está parcialmente certo - para --symmetrice --passphrase, o pedido não parece ser relevante, mas tente --exporte defina --armordepois. Geralmente, as opções devem preceder os comandos, que também é a ordem definida nas páginas de manual.
Jens Erat
2

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

Com base na saída de sintaxe, você provavelmente está usando a v1, caso em que você deseja:

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

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

rsaw
fonte
1

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

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

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


Se você originalmente adicionou 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) primeiro.


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

Xen2050
fonte