GPG2 Solicita senha mesmo com --passphrase especificado

4

Estou tentando fazer o script de uma descriptografia gpg e, como tal, preciso fornecer a senha na linha de comando. De acordo com a página man, existem três maneiras de fazer isso: ler de um arquivo usando --passphrase-file , ler stdin (ou outro descritor de arquivo) usando --passphrase-fd 0 ou incluir na linha de comando usando apenas --passphrase . Todos os itens acima também exigem que --batch seja definido, o que eu fiz.

Minha tentativa mais recente de linha de comando é:

echo "<password>" | gpg2 --no-tty --batch --passphrase-fd 0 -d -o /<path_to_destination>/$FILE_NAME $FILE

que ainda aparece uma caixa de diálogo pedindo a senha. O que estou perdendo aqui? Para referência, se isso faz diferença, minha senha inclui alguns caracteres especiais como & , mas não parece reclamar sobre isso. Além disso, a versão gpg é 2.1.9:

# gpg2 --version
gpg (GnuPG) 2.1.9
libgcrypt 1.7.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

EDIT: Ao contrário de Como forçar o GPG a usar a pinagem do modo de console para solicitar senhas? , que está simplesmente tentando obter uma entrada de senha baseada em texto para uso em uma sessão SSH, estou tentando obter uma completamente não-interativo método de usar o GPG para uso em scripts.

    
por ibrewster 21.03.2017 / 19:58

1 resposta

5

Encontrei a solução aqui: link

Resumidamente, eu precisava primeiro habilitar o modo "loopback" de pinentry no gpg-agent, adicionando a seguinte linha ao arquivo ~/.gnupg/gpg-agent.conf :

allow-loopback-pinentry

Em seguida, adicionar o argumento --pinentry-mode loopback ao meu gpg2 call

    
por 22.03.2017 / 23:04