Je m'attends à ce que la commande suivante extrait le fichier gpg sans demander de mot de passe:
gpg --passphrase 1234 file.gpg
Mais il demande le mot de passe. Pourquoi?
Cela a aussi le même comportement:
gpg --passphrase-file passfile.txt file.gpg
J'utilise Ubuntu avec Gnome 3 et je me souviens qu'il fonctionnait dans Fedora.
shell-script
gpg
Omid
la source
la source
gpg
exécuter la bonne commande, pas un alias ni un wrapper? Essayez/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
etset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
invite à saisir une phrase secrète, contrairement à GPG 1.x. C'était mon problème (dans un programme que j'écris), alors que je pensais avoir votre problème (la chose --list-paquets est exécutée en premier, avant de tenter de décrypter, et je n'ai pas remarqué). J'ai donc créé un nouveau moyen de déterminer si les fichiers étaient cryptés.Réponses:
Je suis dans votre bateau même (ça a fonctionné sur Fedora mais pas sur Ubuntu). Voici un travail apparent que j'ai découvert:
Explanation: Les
0
causes--passphrase-fd
passées à lire proviennent de STDIN plutôt que d'un fichier. Ainsi, la phrase secrète--passphrase-fd
acceptera la chaîne de mot de passe spécifiée.la source
--batch --yes
à ce qui précède a fonctionné pour moi.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. Comment résoudre ce problème?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
semble fonctionner.Inappropriate ioctl for device
avec et sans--batch
ici (sur gpg (GnuPG) 2.1.18).echo "hello" | cat
et lesecho "hello"| cat
deux donnent la même chaîne.Mis à jour le 2017-12-04. (Ajout de --batch afin d'empêcher l'invite de phrase secrète)
Vous devrez peut-être ajouter une
--batch
option:A partir de la version 2 de
GPG
, l'option--batch
est nécessaire pour éviter toute invite ... Ok, je regarde ça:En essayant:
ça sonne bien! Bien maintenant:
Bien qu'aucun
-d
paramètre ne soit fourni (même syntaxe que la question de SO), les données décryptéesfile.gpg
seront extraites vers un nouveaufile
.Cela fonctionne bien!
la source
--passphrase
paramètre fonctionne pour les opérations par lots et ne demande pas de mot de passe.unset GPG_AGENT_INFO
et mêmeGPG_AGENT_INFO=/dev/null
, cela (continuer) de fonctionner ... Peut-être que le fait de le dire$GPG_AGENT_INFO
peut aider !? (Faites-le-nous savoir, répondez-moi s'il vous plaît, je vais éditer cette aide si nécessaire!)Pour la version 2.x GPG vous n'avez pas besoin d'utiliser
--batch
, justefonctionne avec
--passphrase
&--passphrase-file
, et vous laissera entrer de nouvelles informations, en cas de conflit de nom de fichier par exemple:contrairement à
--batch
cela va rapidement échouer, en disant...failed: File exists
(testé sur le gpg 2.1.18 de Debian Stable / Stretch. Ce comportement consistant à ignorer les
--passphrase
options importantes devrait être un bogue, s'il ne l'est pas déjà)la source
On dirait que vous utilisez gpg2. Vous devez également
--batch
choisir cette option. (Si vous envisagez d’ajouter ceci à un script, vous voudrez également l’ajouter,--no-tty
et probablement--yes
.)la source
pour moi, l'ajout de "--no-use-agent" a résolu ce problème pour "gpg (GnuPG) 1.4.16":
la source
Si vous utilisez gpg (GnuPG) 2.2.7 Selon la page de manuel,
ajouter
--pinentry-mode loopback
pour travaillerPar exemple:
la source
--batch
and--pinentry-mode loopback
nécessaires pour une option --passphrase ... fonctionnent-elles? Sur la v.2.1.18, la page d’information dit la même chose (mais pas la page de manuel) à propos de batch & pinentry, mais fonctionne toujours avec seulement --pinentry ... Si les deux sont vraiment nécessaires pour la v.2.2.7, deviennent ridicules, les développeurs introduisent intentionnellement des bugs sérieuxCela a fonctionné comme par magie pour moi:
la source
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. Des idées?la source
as-tu essayé de faire:
Source: ici
la source
Je pense qu'une méthode assez sécurisée pour passer le mot de passe à la ligne de commande est la suivante:
Cela va faire apparaître la commande "echo" et passer un descripteur de fichier comme chemin d'accès à gpg (par exemple / dev / fd / 63). gpg lira alors la clé à partir de là. Dans le même temps, la commande echo doit être exécutée en parallèle et se terminer instantanément, en laissant la clé sur la mémoire tampon du fd.
Les avantages sont:
la source
Vous ne me croirez pas quand je vous dirai que sur ubuntu gpg essaie de vous demander votre mot de passe si $ DISPLAY est défini et le prend depuis la ligne de commande --password si vous le désactivez. Cela fonctionne comme prévu:
Juste un autre exemple d'ingénierie sur je suppose.
la source
Voici un lien vers une réponse stackoverflow qui pourrait vous aider davantage; J'ai un projet de décryptage / cryptage en masse, et comme GnuPG est très strict en matière de mots de passe passifs, il a appris de manière difficile qu'il
--passphrase
ne fonctionne que très rarement. Pensez plutôt que l'--passphrase-fd
option est plus fiable.Ce script utilise correctement l'
--passphrase -fd
option et a été testé publiquement via Travis-CI, où vous pouvez trouver les journaux de cette action en action.Maintenant, je ne vais pas simplement poster des liens vers une réponse sans fournir un exemple de code ici. Voici donc un script "autonome" mis à jour avec lequel vous pouvez jouer:
Même si ce qui précède n’est pas aussi sophistiqué que la protection liée sur GitHub, il devrait être encore plus fonctionnel que la réponse liée au début de ce message.
Heureux piratage.
la source
Comme mentionné dans man gpg, l'option suivante peut être utilisée
--Mode mode pinentry Définit le mode pinentry sur mode. Les valeurs autorisées pour le mode sont:
Par conséquent, le comportement par défaut de gpg est d'inviter l'utilisateur à saisir la phrase secrète. Si vous modifiez ce mode d'agent d'utilisateur en "--pinentry-mode loopback", il fonctionne parfaitement. commande complète
la source
Une méthode simple que j'ai trouvée pour travailler sur une machine Linux est la suivante: 1) importer la clé dans gpg: => shell> gpg —import private_key.key
2) déchiffrer donnant le nom du fichier de sortie: => shell> gpg —output -d
2.1) Donner la commande ci-dessus vous invitera à entrer une paraphrase. Entrez la paraphrase et il va déchiffrer le fichier gpg.
la source
la source
Mettre à la fin de
~/.gnupg/gpg.conf
:Mettez à la fin du (éventuellement nouveau) fichier
~/.gnupg/gpg-agent.conf
:Et puis exécutez cette commande:
Vous pouvez maintenant exécuter ceci sans demander de mot de passe:
Où $ 1 représente le texte à chiffrer, $ 2 l'identifiant de l'utilisateur et $ 3 le mot de passe.
Remarque: je ne me souviens pas pourquoi cela fonctionne, mais cela fonctionne. Si vous connaissez les détails, veuillez éditer et insérer ici.
la source
pour Ubuntu 18.04 cela a fonctionné pour moi-
Crypter:
décrypter:
la source