Espero que o seguinte comando extraia o arquivo gpg sem pedir senha:
gpg --passphrase 1234 file.gpg
Mas ele pede a senha. Por quê?
Isso também tem o mesmo comportamento:
gpg --passphrase-file passfile.txt file.gpg
Eu uso o Ubuntu com o gnome 3 e lembre-se de que ele estava funcionando no Fedora
shell-script
gpg
Omid
fonte
fonte
gpg
executar o comando certo, não um alias nem um wrapper? Tente/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
eset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
solicita uma senha, enquanto não no GPG 1.x. Esse foi o meu problema (em um programa que estou escrevendo), enquanto eu pensava ter seu problema (a coisa --list-packets foi executada primeiro, antes de tentar descriptografar, e eu não percebi). Então, criei uma nova maneira de determinar se os arquivos foram criptografados.Respostas:
Estou exatamente no mesmo barco (funcionou no Fedora, mas não no Ubuntu). Aqui está um trabalho aparente que eu descobri:
Explicação: A passagem de
0
causas--passphrase-fd
para leitura de STDIN em vez de um arquivo. Portanto, o envio da frase secreta--passphrase-fd
aceitará a sequência de senha especificada.fonte
--batch --yes
ao acima funcionou para mim.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. Como eu resolvo isso?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
parece funcionar.Inappropriate ioctl for device
com e sem--batch
aqui (no gpg (GnuPG) 2.1.18).echo "hello" | cat
eecho "hello"| cat
ambos produzem a mesma string.Atualizado 2017-12-04. (Adicionando --batch para evitar o prompt da senha)
Pode ser necessário adicionar a
--batch
opção:A partir da versão 2 do
GPG
, a opção--batch
é necessária para garantir nenhuma solicitação ... Ok, procurando:Tentando:
parece bom! Bem agora:
Embora nenhum
-d
parâmetro seja fornecido (a mesma sintaxe da pergunta de SO), os dados decodificadosfile.gpg
serão extraídos para um novofile
.Isso funciona bem!
fonte
--passphrase
parâmetro funciona para operações em lote e não solicita uma senha.unset GPG_AGENT_INFO
e até mesmoGPG_AGENT_INFO=/dev/null
, isso (continue) para funcionar ... Talvez desestabilizar$GPG_AGENT_INFO
possa ajudar !? (Informe-nos; por favor, responda, eu editarei se isso ajudar!)Para o gpg versão 2.x você não precisa usar
--batch
, apenasfunciona com
--passphrase
&--passphrase-file
e permitirá que você insira novas informações, no caso de conflitos de nome de arquivo, por exemplo:diferente
--batch
disso falhará rapidamente, dizendo...failed: File exists
(testado no gpg 2.1.18 do Debian Stable / Stretch. Esse comportamento de ignorar
--passphrase
opções importantes realmente deve ser um bug, se já não estiver)fonte
Parece que você está usando o gpg2. Você precisa jogar a
--batch
opção também. (Se você planeja adicionar isso a um script, também desejará adicionar--no-tty
e provavelmente--yes
.)fonte
para mim, adicionar "--no-use-agent" resolveu isso para "gpg (GnuPG) 1.4.16":
fonte
Se estiver usando gpg (GnuPG) 2.2.7 De acordo com a página de manual,
adicionar
--pinentry-mode loopback
para trabalharPor exemplo:
fonte
--batch
e são--pinentry-mode loopback
necessárias para que qualquer opção --passphrase ... funcione? Na v.2.1.18, a página de informações diz o mesmo (mas não a página de manual) sobre lote e pinentry necessários, mas ainda funciona apenas com --pinentry ... Se ambos são realmente necessários para a v.2.2.7, então as coisas está ficando ridículo, os desenvolvedores estão introduzindo erros graves de propósitoFuncionou como mágica para mim:
fonte
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. Alguma ideia?fonte
você já tentou fazer:
Fonte: Aqui
fonte
Eu acho que um método bastante seguro para passar a senha para a linha de comando é o seguinte:
O que isto fará é gerar o comando "echo" e passar um descritor de arquivo como um nome de caminho para o gpg (por exemplo, / dev / fd / 63). O gpg lerá a chave a partir daí. Enquanto isso, o comando echo deve executar em paralelo e terminar instantaneamente, deixando a chave no buffer do fd.
Os benefícios são:
fonte
Você não vai acreditar em mim quando eu lhe digo que no ubuntu gpg tenta perguntar sua senha se $ DISPLAY estiver definido e a usar na linha de comando --password, se você a desarmar. Isso funciona conforme o esperado:
Apenas mais um exemplo de excesso de engenharia, eu acho.
fonte
Aqui está um link para uma resposta de stackoverflow que talvez seja de mais assistência; Eu tenho um projeto que faz descriptografia / criptografia em massa e, devido ao GnuPG ser muito rigoroso com as senhas, aprendi da maneira mais difícil que
--passphrase
funciona apenas em raras ocasiões. Em vez disso, considere a--passphrase-fd
opção mais confiável.Este script faz uso adequado da
--passphrase -fd
opção e foi testado publicamente pelo Travis-CI, onde você pode encontrar os logs em ação.Agora, não vou apenas postar links para uma resposta sem fornecer um código de exemplo aqui, então aqui está um script "independente" atualizado com o qual você pode jogar:
Embora o exposto acima não seja tão sofisticado quanto a proteção vinculada no GitHub, ele deve ser ainda mais funcional do que a resposta vinculada no início desta postagem.
Feliz hacking.
fonte
Como mencionado no man gpg, a seguinte opção pode ser usada
- modo de pinentry Defina o modo de pinentry para o modo. Os valores permitidos para o modo são:
Portanto, o comportamento padrão do gpg é solicitar ao usuário a senha, se alterar o modo do agente do usuário para "- loopentry-mode loopback" Funciona perfeitamente. comando completo
fonte
Um método simples que encontrei trabalhando em uma máquina Linux é: 1) chave de importação para gpg: => shell> gpg —import private_key.key
2) decifrar o nome do arquivo externo: => shell> gpg —put -d
2.1) Dar o comando acima solicitará que você digite a paráfrase. Digite a paráfrase e ela descriptografará o arquivo gpg.
fonte
fonte
Coloque no final de
~/.gnupg/gpg.conf
:Coloque no final do arquivo (talvez novo)
~/.gnupg/gpg-agent.conf
:E, em seguida, execute este comando:
Agora você pode executar isso sem pedir senha:
Onde $ 1 é o texto a ser criptografado, $ 2 é o ID do usuário e $ 3 a senha.
Nota: Não me lembro por que funciona, mas funciona. Se você conhece os detalhes, edite e insira aqui.
fonte
para o Ubuntu 18.04, isso funcionou para mim
criptografar:
descriptografar:
fonte