Arra számítok, hogy a következő parancs kibontja a gpg fájlt jelszó nélkül:

 gpg --passphrase 1234 file.gpg 

De kéri a jelszót. Miért?

Ennek is ugyanaz a viselkedése:

 gpg --passphrase-file passfile.txt file.gpg 

Az Ubuntut a gnome 3-mal használom, és ne felejtsük el, hogy a Fedorában működött

Megjegyzések

  • Biztos, hogy gpg a megfelelő parancsot futtatja, nem álnevet és csomagolót sem? Próbálkozzon /usr/bin/gpg --passphrase 1234 file.gpg, type gpg, gpg --version és set | grep '^.\{0,9\}PG'
  • Csak a rekord kedvéért, ha a GPG régi verzióját használja, akkor annak működnie kell (Ubuntuban és hasonlókban ' s a gnupg1 csomagot. Mindazonáltal nem hajlandóak használni, hacsak nem muszáj.
  • Vegye figyelembe azt is, hogy a GPG 2.x-ben gpg --list-packets --batch myFile.gpg jelszót kér, míg nem ' t a GPG 1.x-ben. Ez volt a problémám (egy olyan programban, amelyet ' írtam), miközben azt hittem, hogy neked van problémád (a A –list-packets dolgot először végrehajtották, mielőtt megkíséreltem volna a visszafejtést, és nem vettem észre '). Tehát új módszert használtam annak megállapítására, hogy a fájlok titkosítva vannak-e.
  • Ha gpg --version 2.x verziója van (mint az Ubuntu 18.04-ben), ugorjon a Xen2050 ' válaszára: unix.stackexchange.com/a/415064/237055

Válasz

Pontosan ugyanabban a hajóban vagyok (a Fedorán működött, de az Ubuntunál nem). Itt van egy látszólagos munka, amelyet felfedeztem:

echo your_password | gpg --batch --yes --passphrase-fd 0 your_file.gpg 

Magyarázat: A 0 átadása --passphrase-fd olvasni az STDIN-ből, nem pedig fájlból. Tehát a jelszó átküldésével --passphrase-fd elfogadja a megadott jelszó karakterláncot.

Megjegyzések

  • hozzáadva Nekem a fentiek --batch --yes működött.
  • De akkor kapok egy problémát, ha titkosítani akarom a gpg-be beillesztett adatokat, pl. echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg. Hogyan tudom ezt megoldani?
  • Nos, a gpg Ubuntu verziójával úgy tűnik, hogy az echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg működik.
  • I ' m Inappropriate ioctl for device és --batch nélkül (itt a gpg (GnuPG) 2.1.18).
  • @RyanGriggs szerintem nem. echo "hello" | cat és echo "hello"| cat ugyanaz a karakterlánc.

Válasz

Frissítve 2017.12.04. (A –batch hozzáadása a jelszó megadásának megakadályozása érdekében)

Lehet, hogy hozzá kell adnia a --batch opciót:

és. használ-e címzettkulcs pár t, előfordulhat, hogy hozzá kell adnia a --pinentry-mode loopback szót is.

A , a --batch opcióra szükség van a gyorsaság biztosításához … Ok, arra figyelve, hogy:

$ gpg --version gpg (GnuPG) 2.1.18 libgcrypt 1.7.6-beta Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://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: /home/user /.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 

Próbálkozás:

$ newdir=$(mktemp -d) $ cd $newdir $ seq 1 10 | gpg -c --batch --passphrase 1234 -o file.gpg - $ ls -ltr total 4 -rw-r--r-- 1 user user 91 Dec 4 15:42 file.gpg $ hd file.gpg 00000000 8c 0d 04 07 03 02 ea fa d0 d3 2b 9a ea 06 df d2 |..........+.....| 00000010 4a 01 ed 50 74 ff 27 45 0e 6c 94 74 db e9 8a a5 |J..Pt."E.l.t....| 00000020 03 9f 67 a0 73 97 e9 15 6b 56 a0 f0 88 71 85 a8 |..g.s...kV...q..| 00000030 dc 41 71 9f fa 3b f9 9d af ac 80 eb f4 f7 28 19 |.Aq..;........(.| 00000040 9f be 75 47 e6 d8 00 3e f6 60 f1 00 5e 63 57 ef |..uG...>.`..^cW.| 00000050 14 c3 4b 20 ff 94 03 03 c1 fc 98 |..K .......| 0000005b 

jól hangzik! Nos, most:

$ gpg -d --batch --passphrase 1234 file.gpg gpg: AES encrypted data gpg: encrypted with 1 passphrase 1 2 3 4 5 6 7 8 9 10 

Bár nincs megadva -d paraméter (ugyanaz a szintaxis, mint az SO kérdésében), A file.gpg fájlból visszafejtett adatokat egy új file fájlba vonjuk ki.

$ gpg --batch --passphrase 1234 file.gpg gpg: WARNING: no command supplied. Trying to guess what you mean ... gpg: AES encrypted data gpg: encrypted with 1 passphrase $ ls -ltr total 8 -rw-r--r-- 1 user user 91 Dec 4 15:42 file.gpg -rw-r--r-- 1 user user 21 Dec 4 15:44 file $ cat file 1 2 3 4 5 6 7 8 9 10 

Ez jól működik!

$ cd - $ rm -fR $newdir $ unset newdir 

címzett kulcsfájl jához:

Első tiszta tempó létrehozása

newdir=$(mktemp -d) cd $newdir export GNUPGHOME=$newdir echo YourPassword >password.txt gpgconf --kill gpg-agent # Required, if agent_genkey fail... gpg --generate-key --batch <<eoGpgConf %echo Started! Key-Type: default Key-Length: default Subkey-Type: default Name-Real: Full Name There Name-Comment: Something funny Name-Email: [email protected] Expire-Date: 0 Passphrase: $(<password.txt) %commit %echo Done. eoGpgConf gpg: keybox "/tmp/tmp.xU5Ldyr4iB/pubring.kbx" created gpg: Started! gpg: agent_genkey failed: No such file or directory gpg: key generation failed: No such file or directory gpg: Done. 

Hmm.

gpgconf --kill gpg-agent gpg --generate-key --batch <<eoGpgConf %echo Started! ... eoGpgConf gpg: Started! gpg: key 43E6B96CAFABDEDF marked as ultimately trusted gpg: directory "/tmp/tmp.xU5Ldyr4iB/openpgp-revocs.d" created gpg: revocation certificate stored as "/tmp/tmp.xU5Ldyr4iB/openpgp-revocs.d/DF223E1612CF917DC3BD42AA43E6B96CAFABDEDF.rev" gpg: Done. 

Akkor most

gpg -k /tmp/tmp.xU5Ldyr4iB/pubring.kbx ------------------------------- pub rsa3072 2020-06-19 [SC] DF223E1612CF917DC3BD42AA43E6B96CAFABDEDF uid [ultimate] Full Name There (Something funny) <[email protected]> sub rsa3072 2020-06-19 [E] 

Ezután a kocsma ujjlenyomatának utolsó 8 csésze használható kulcsaliasként.

gpg -k [email protected]| sed -e "/^pub/{N;s/.*\(.\{16\}\)/\1/;p;s/^.\{8\}//;q};d" 43E6B96CAFABDEDF AFABDEDF 

Oké, most!

seq -f %\"8g 990 5 1015 | gpg --batch --armor --recipient AFABDEDF --encrypt --output file.gpg 

vagy

seq -f %\"8g 990 5 1015 | gpg --batch -aer 43E6B96CAFABDEDF -o file.gpg 

Adja:

cat file.gpg -----BEGIN PGP MESSAGE----- hQEOA5BNpEVKPGsfEAP/XutJp7ME3I1MqG0vZyIS8w+npPQMPicIpQUwM4OVO1rX 2lhrymp0zGqxAH7s9Dh9YJNRA/9zYCO4/vghtnnl/zg10vILs9btgLXY+aupgoQ9 nifnVC8JJ1DC+hZZrIHyzS73BsjufWhpbwURYc7EgIMGKu2TRiy5I8+0aZ4zAtID /ApL0sTBQ9hqmIatzaYbX9ajmDf1vvtE2/s3MUFA/hIqew2MVMhlb4RjyT7ix03P LmCH2Mfy88VGr59eSUoZq+CPMDSZpXxbE2LfyPHYsObraO+a6FdVHhj2xcw/tnDO TcNHTKnTRJSb9sfLAtJmE9eaxebkl27T+UvqyJUG4dgu0lABadboNaEidlrCYLNi icR19UX0G7E50+i3iKvw0u81YtciYyOnpHvgazb5QbqJNN5P8izC4J3FqW7HaTDI xnf+8IaX2Vqrq5+k4qLR7h5Vcw== =1fb5 -----END PGP MESSAGE----- 

Ezután

gpg --decrypt --pinentry-mode loopback --passphrase-file password.txt --batch file.gpg 

vagy

gpg -d --pinentry-mode loopback --passphrase-file password.txt --batch file.gpg 

renderel:

gpg: encrypted with 3072-bit RSA key, ID 58020687E0746339, created 2020-06-19 "Full Name There (Something funny) <[email protected]>" 990 995 1"000 1"005 1"010 1"015 

Megjegyzések

  • Nem kapja meg a figyelmeztetést " gpg: A gpg-agent nem érhető el ebben a munkamenetben ", tehát valószínűleg a jelszót az ügynökben tárolja?
  • @AsfandYarQazi Nem, a jelszót a parancssorba írja be.
  • Ez a válasz nekem bevált. Ubuntu a gpg 1.4.16-tal. A --passphrase paraméter kötegelt műveleteknél működik, és nem kér ' jelszót.
  • Ez úgy tűnik, hogy működni fog, mert a bosszantó gpg-agent gyorsítótárazza a jelszót. Próbálkozzon a rendszer teljes újraindításával és újrakezdésével, vagy írja be a hibás – jelszó 5678 (rossz jelszó) szót.
  • Lásd az alacsonyabb választ. A kulcs --pinentry-mode loopback. Működik!

Válasz

A gpg 2. verzióhoz.x nem kell használni a --batch szót, csak

--pinentry-mode loopback 

a & --passphrase-file, és lehetővé teszi új információk megadását, például fájlnévütközések esetén:

gpg --pinentry-mode loopback --passphrase-file=file encrypted.gpg ... File "encrypted" exists. Overwrite? (y/N)n Enter new filename: f2 

ellentétben a --batch -vel, amely gyorsan kudarcot vall, mondván: ...failed: File exists

(a Debian Stable / Stretch “gpg 2.1.18 verzióján tesztelve. A fontos --passphrase opciók figyelmen kívül hagyásának valóban hibának kell lennie, ha még nem” t “

Megjegyzések

  • Ez az Ubuntu 18.04 Bionic with gpg (GnuPG) 2.2.4 verzióján is jól működik
  • Ez a MacOS rendszeren telepítés után működik gpg homebrew-val
  • Ez nekem cat your-passphrase-file.txt | gpg --pinentry-mode loopback --passphrase-fd 0 --sign your-file-to-sign.txt
  • Köszönöm, a visszafejtésnél is működik

Válasz

Úgy hangzik, mintha a gpg2-t használnád. Be kell dobnia a --batch opciót is. (Ha ezt hozzá kívánja adni egy szkripthez, akkor hozzá kell adnia a --no-tty és valószínűleg a --yes mappákat is.)

Megjegyzések

  • Ez ' s 1.4. A –batch használatának nincs hatása.
  • Sajnálom, akkor @Nima. Nem tudom, hogy ' mit mondjak neked. A GnuPG v1.4 használatával nem kell ' semmit sem tennie, hogy bármelyik opcióval átadja a jelszót.
  • Jó megjegyzés, @rsaw, segített megakadályozom a jelszó kérését (és kissé kevésbé elegáns echo / STDIN opciót).
  • –batch még a Windows-ban is segített. woo hoo.

Válasz

nekem, a “–no-use-agent” hozzáadásával ez megoldódott “gpg (GnuPG) 1.4.16”:

date > foo echo pass > passphrase # w/o --no-use-agent > rm -f foo.gpg; gpg --cipher-algo aes256 --output foo.gpg --passphrase-file ./passphrase --batch --yes --symmetric foo gpg: gpg-agent is not available in this session gpg: can"t query passphrase in batch mode gpg: error creating passphrase: invalid passphrase gpg: symmetric encryption of `foo" failed: invalid passphrase > rm -f foo.gpg; gpg --cipher-algo aes256 --output foo.gpg --passphrase-file ./passphrase --batch --yes --no-use-agent --symmetric foo > ls -al total 20 drwxr-xr-x 2 root root 4096 Aug 22 13:59 . drwx------ 18 root root 4096 Aug 22 13:58 .. -rw-r--r-- 1 root root 30 Aug 22 13:58 foo -rw-r--r-- 1 root root 103 Aug 22 13:59 foo.gpg -rw-r--r-- 1 root root 5 Aug 22 13:58 passphrase 

Válasz

Ha gpg (GnuPG) használatával 2.2.7 A man oldal szerint

–passphrase-fd n

Olvassa el a jelszót innen: fájlleíró n. Csak az első sor lesz olvasható az n fájlleíróból. Ha n-t 0-val használ, akkor a jelszó az STDIN-ből lesz olvasható. Ez csak akkor használható, ha csak egy jelmondatot ad meg.

–passphrase-file file

Olvassa el a jelmondatot a fájl fájlból. Csak az első sort olvassa el a fájl fájlból. Ez csak akkor használható, ha csak egy jelszót ad meg. Nyilvánvaló, hogy egy fájlban tárolt jelszó megkérdőjelezhető biztonságot jelent, ha más felhasználók el tudják olvasni ezt a fájlt. Ne használja ezt az opciót, ha elkerülheti.

–jelszavas karakterlánc

Használjon karakterláncot jelszóként. Ez csak akkor használható, ha csak egy jelszót ad meg. Nyilvánvaló, hogy ez nagyon megkérdőjelezhető biztonságot jelent egy többfelhasználós rendszeren. Ne használja ezt az opciót, ha elkerülheti.

add --pinentry-mode loopback a működés érdekében

Ne feledje, hogy a 2.0 verzió óta ezt a jelszót csak akkor használják, ha a –batch paramétert is megadták . A 2.1-es verzió óta a –pinentry-módot is vissza kell állítani.

Például:

gpg --batch --yes --passphrase="pw" --pinentry-mode loopback -o out -d in 

Megjegyzések

  • A --batch és --pinentry-mode loopback a –passphrase … opció működéséhez szükséges opciók? A v.2.1.18-on az információs oldal ugyanazt mondja (de nem a man oldalt) a kötegelt & kötegelésről, de továbbra is csak a –pinentry-vel működik … Ha mindkettő valóban szükség van a v.2.2.7 verzióhoz, akkor a dolgok egyre nevetségesebbé válnak, a fejlesztők szándékosan vezetnek be komoly hibákat

Válasz

read -sp "Enter passphrase: " pass echo "${pass}" | gpg --batch --no-tty --yes --passphrase-fd 0 --symmetric -o /path/to/saved/file.jpg.gpg /path/to/file.jpg echo "${pass}" | gpg --batch --no-tty --yes --passphrase-fd 0 --decrypt -o /path/to/decrypted/file.jpg /path/to/encrypted/file.jpg.gpg 

Válasz

Nekem varázslatosan működött:

echo "YOUR_PASS_PHRASE" | gpg --batch --yes --passphrase-fd 0 /home/somewhere/your_file.pgp 

megjegyzések

  • hiba: gpg: no valid OpenPGP data found. gpg: processing message failed: eof. Van valami ötleted?

Válasz

megpróbáltad:

gpg --batch --passphrase-fd 0 --decrypt-files *.gpg gpg --passphrase-fd 0 1234 file.gpg 

Forrás: Itt

Válasz

Amint azt a man gpg is említette, a következő opció használható.

– pinentry mód mód Állítsa a pinentry módot módra. A mód engedélyezett értékei:

 default Use the default of the agent, which is ask. ask Force the use of the Pinentry. cancel Emulate use of Pinentry"s cancel button. error Return a Pinentry error (``No Pinentry""). loopback Redirect Pinentry queries to the caller. Note that in contrast to Pinentry the user is not prompted again if he enters a bad password. 

Tehát a gpg alapértelmezett viselkedése az, hogy a felhasználótól jelszót kell kérnie, ha ezt a felhasználói ügynök módot “–pinentry-módra módosítja loopback “Teljesen jól működik. teljes parancs

gpg --pinentry-mode loopback --passphrase <passphrase> -d <file to decrypt> 

Válasz

Úgy gondolom, hogy egy egészen biztonságos módszer a parancssor jelszava a következő:

gpg --passphrase-file <(echo password) --batch --output outfile -c file 

Ez azt jelenti, hogy az “echo” parancsot létrehozza, és a fájlleírót elérési útnak továbbítja gpg (pl. / dev / fd / 63). A gpg ekkor elolvassa a kulcsot onnan. Ezalatt az echo parancsnak párhuzamosan kell futnia, és azonnal be kell fejeznie, a kulcsot az fd pufferén hagyva.

Az előnyök a következők:

  • A gpg parancs parancssorában nem lesz jelszó.
  • A visszhang rövid életű lesz. Valójában szinte azonnali kell, hogy legyen
  • A jelszó soha nem fog megmaradni a lemezen, nem lesz törölhető fájl, és ha a parancs megszakad, akkor nem marad maradék

Válasz

Nem fogsz elhinni, amikor elmondom, hogy az ubuntuban a gpg megpróbálja megkérdezni a jelszavadat, ha a $ DISPLAY be van állítva és kiveszi a parancssorból – jelszó, ha beállítja. Ez a várakozásoknak megfelelően működik:

DISPLAY= gpg --symmetric --passphrase pass --batch 

Azt hiszem, csak egy példa a túlmérnöki tervezésre.

Válasz

Itt a link egy stackoverflow válaszra, amely talán további segítséget nyújt; van egy a tömeges visszafejtést / titkosítást végző projekt, és mivel a GnuPG nagyon szigorúan alkalmazza a jelszavakat, megtanulta, hogy a --passphrase csak ritkán működik. az --passphrase-fd opció megbízhatóbbá válása érdekében.

Ez a szkript megfelelővé teszi a --passphrase -fd opció használata, és a Travis-CI n keresztül nyilvánosan tesztelték, ahol a naplók működés közben megtalálhatók.

Most nem csak a válaszra mutató linkeket teszek közzé anélkül, hogy itt példakódot adnék meg, ezért itt egy frissített “önálló” szkript, amellyel játszhatsz:

#!/usr/bin/env bash # Set some variables for easy modding Var_fd="9" Var_pass="/path/to/passphrase.file" Var_gpg_opts="--passphrase-fd ${Var_fd} --decrypt" Var_output_location="out.txt" Arr_string=( "$@" ) # Open file descriptor and shove the passphrase file into it if [ -f "${Var_pass}" ]; then exec ${Var_fd}<"${Var_pass}" else exec ${Var_fd}<(echo "${Var_pass}") fi # Pipe input array though gpg and append to output file cat <<<"${Arr_string[*]}" | $(which gpg) ${Var_gpg_opts} >> ${Var_output_location} # Do not forget to close the file descriptor exec ${Var_fd}>&- 

Míg a fentiek nem annyira divatosak, mint a li Az nked protection a GitHub-nál még működőképesebbnek kell lennie, mint a bejegyzés elején linkelt válasz.

Boldog hackelést.

Válasz

Egy egyszerű módszer, amelyet egy linuxos gépen találtam: 1) importkulcs a gpg-be: => shell> gpg – privát_kulcs.kulcs importálása

2) visszafejteni az outfile név megadását: => shell> gpg —output -d

2.1) A fenti parancs megadása parafrázis megadására szólít fel. Írja be a parafrázist, és ez visszafejti a gpg fájlt.

Válasz

gpg2 -se --passphrase yourpassword --batch --yes -r [email protected] filename 

Megjegyzések

  • jó lenne, ha elmagyaráznád, miért kell ezzel megoldani a problémát
  • Bár ez a kódrészlet megoldhatja a kérdést, magyarázattal együtt valóban segít a bejegyzés minőségének javításában. Ne felejtsd el, hogy a jövőben az olvasóknak válaszolsz, és nem csak arra, aki most kérdez! Kérjük, szerkessze válaszát, hogy magyarázatot adjon hozzá, és adja meg, hogy milyen korlátozások és feltételezések érvényesek.

Válasz

Tegye a ~/.gnupg/gpg.conf végére:

use-agent pinentry-mode loopback 

Helyezze be az (esetleg új) fájl végét ~/.gnupg/gpg-agent.conf:

allow-loopback-pinentry 

Ezután futtassa ezt a parancsot :

echo RELOADAGENT | gpg-connect-agent 

Mostantól jelszó megadása nélkül futtathatja ezt:

echo "$1" | gpg2 --trust-model always --clearsign --batch --no-tty --quiet --no-verbose --yes -u $2 --digest-algo SHA512 --s2k-digest-algo SHA512 --passphrase "$3" 

Ahol a $ 1 a titkosítandó szöveg, a $ 2 a felhasználói azonosító és a $ 3 a jelszó.

Megjegyzés: Nem emlékszem, miért működik, de működik. Ha ismeri a részleteket, kérjük, szerkessze és illessze be ide.

Válasz

az Ubuntu 18.04-hez ez nekem bevált –

titkosítás:

pass="123" gpg -c --batch --passphrase "$pass" some-file.tgz 

visszafejtés:

gpg some-file.tgz.gpg 

válasz

Még én is ugyanazzal a problémával szembesültem, de egyik sem f az itt említett parancsok nem működtek, és különböző válaszokat is megvizsgáltam különböző parancsokkal, de semmi sem működött.

A Ubuntu 20.04.1 LTS

Sok fejfájás és kísérletezés után ez a

gpg --pinentry-mode loopback --passphrase-file=passphrase.txt --decrypt-files my-encrypted-gpg-file.gpg

passphrase.txt fájl tartalmazza a passphrase.txt fájlt.

Remélem, hogy segítséget nyújt.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük