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
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
ésecho "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
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.
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
ésset | grep '^.\{0,9\}PG'
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.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