Odotan seuraavan komennon purkavan gpg-tiedoston pyytämättä salasanaa:

 gpg --passphrase 1234 file.gpg 

Mutta se pyytää salasanaa. Miksi?

Myös tällä on sama käyttäytyminen:

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

Käytän Ubuntua gnome 3: n kanssa ja muista, että se toimi Fedorassa

Kommentit

  • Oletko varma, että gpg suorittaa oikean komennon, ei aliaksen tai kääreen? Kokeile /usr/bin/gpg --passphrase 1234 file.gpg, type gpg, gpg --version ja set | grep '^.\{0,9\}PG'
  • Jos haluat käyttää GPG: n vanhaa versiota, sen pitäisi toimia vain tietueen vuoksi (Ubuntussa ja vastaavissa se ' s gnupg1-paketin. He eivät kuitenkaan suosittele sen käyttöä, ellei sinun tarvitse.
  • Huomaa myös, että GPG 2.x: ssä gpg --list-packets --batch myFile.gpg pyytää salasanaa, kun taas se ei ' t GPG 1.x: ssä. Se oli minun ongelmani (ohjelmassa, jota kirjoitin ' kirjoitin), kun luulin, että minulla on ongelma ( –list-packets-juttu suoritettiin ensin, ennen kuin yritin purkaa salausta, enkä ' huomannut). Joten tein uuden tavan selvittää, onko tiedostot salattu.
  • Jos sinulla on gpg --version 2.x (kuten Ubuntu 18.04: ssä), siirry Xen2050 ' -vastaukseen: unix.stackexchange.com/a/415064/237055

Vastaa

Olen täsmälleen samassa veneessäsi (se toimi Fedoralla, mutta ei Ubuntulla). Tässä on ilmeinen työ, jonka löysin:

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

Selitys: 0 -kohdan läpäisy aiheuttaa --passphrase-fd lukea STDIN: stä tiedostosta. Joten, salasanan hakeminen saa --passphrase-fd hyväksymään määritetyn salasanamerkkijonon.

Kommentit

  • lisääminen --batch --yes yllä olevaan toimi minulle.
  • Mutta sitten saan ongelman, jos haluan salata tietoja, jotka syötetään gpg: hen, esim. echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg. Kuinka voin ratkaista tämän?
  • No, gpg: n Ubuntu-versiolla echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg näyttää toimivan.
  • I ' m saamassa Inappropriate ioctl for device täällä ja ilman --batch täällä (gpg: ssä (GnuPG) 2.1.18).
  • @RyanGriggs En usko. echo "hello" | cat ja echo "hello"| cat tuottavat molemmat saman merkkijonon.

Vastaa

Päivitetty 04.12.2017. (Lisätään –batch salasanakehotteen estämiseksi)

Saatat joutua lisäämään vaihtoehdon --batch:

ja. onko käytössäsi vastaanottajan avainpari , sinun on ehkä lisättävä --pinentry-mode loopback.

, vaihtoehto --batch tarvitaan varmistamaan, ettei kehotteita ole … Ok, etsimällä seuraavaa:

$ 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 

Yritetään:

$ 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 

kuulostaa hyvältä! No, nyt:

$ 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 

Vaikka -d -parametria ei annettakaan (sama syntakse kuin SO: n kysymys), puretut tiedot tiedostosta file.gpg puretaan uuteen file.

$ 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 

Tämä toimii hyvin!

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

vastaanottajan avaintiedosto :

puhdas tempo luotu ensin

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. 

Sitten

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] 

Sitten viimeistä 8charia pubin sormenjäljestä voitiin käyttää avain aliaksena.

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

Ok, nyt!

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

tai

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

antaa:

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----- 

Sitten

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

tai

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

näyttää:

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 

Kommentit

  • Et saa varoitusta " gpg: gpg-agentti ei ole käytettävissä tässä istunnossa ", joten salasana on todennäköisesti tallennettu agenttiin?
  • @AsfandYarQazi Ei, salasana syötetään komentoriville.
  • Tämä vastaus toimi minulle. Ubuntu ja gpg 1.4.16. Parametri --passphrase toimii eräajotoiminnoissa, eikä ' pyydä salasanaa.
  • Tämä voi näyttää toimivan, koska ärsyttävä gpg-agentti välittää salasanan välimuistiin. Kokeile käynnistää järjestelmä uudelleen kokonaan ja aloittaa uudestaan tai kirjoittaa väärä – tunnuslause 5678 (väärä tunnuslause).
  • Katso alempi vastaus. Avain on --pinentry-mode loopback. Se toimii!

Vastaa

Gpg-versiolle 2.x sinun ei tarvitse käyttää --batch, vain

--pinentry-mode loopback 

toimii --passphrase & --passphrase-file, ja antaa sinun syöttää uusia tietoja, esimerkiksi tiedostonimiristiriitojen varalta:

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

toisin kuin --batch, joka epäonnistuu nopeasti, sanomalla ...failed: File exists

(testattu Debian Stable / Stretch ”gpg 2.1.18: lla. Tämän tärkeiden --passphrase -vaihtoehtojen huomiotta jättämisen pitäisi olla vika, jos se ei jo ole”

Kommentit

  • Tämä toimii hyvin myös Ubuntu 18.04 Bionic with gpg (GnuPG) 2.2.4 -käyttöjärjestelmässä
  • Tämä toimii MacOS-käyttöjärjestelmässä asennuksen jälkeen gpg homebrewlla
  • Tämä toimii minulle cat your-passphrase-file.txt | gpg --pinentry-mode loopback --passphrase-fd 0 --sign your-file-to-sign.txt
  • Kiitos, se toimii myös salauksen purkamiseen

Vastaa

Kuulostaa siltä, että käytät gpg2: ta. Sinun on heitettävä myös vaihtoehto --batch. (Jos aiot lisätä tämän komentosarjaan, sinun on myös lisättävä tiedostot --no-tty ja todennäköisesti --yes.)

Kommentit

  • Se ' s 1.4. –batchilla ei ole vaikutusta.
  • Anteeksi sitten @Nima. En tiedä, mitä kertoa sinulle '. GnuPG v1.4: n avulla sinun ei ' tarvitse tehdä mitään muuta, jotta välität salasanan jommallakummalla näistä vaihtoehdoista.
  • Hyvä muistiinpano, @rsaw, auttoi estän salasanakehotteita (ja hieman vähemmän tyylikäs kaiku / STDIN-vaihtoehto).
  • –joukko auttoi jopa Windowsissa. woo hoo.

Vastaa

minulle, lisäämällä ”–no-use-agent” ratkaisi tämän ”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 

Vastaa

Jos gpg: n (GnuPG) avulla 2.2.7 Man -sivun mukaan

–passphrase-fd n

Lue tunnuslause tiedostokuvaaja n. Vain ensimmäinen rivi luetaan tiedostokuvaajasta n. Jos käytät n: ää 0, salasana luetaan STDIN: stä. Tätä voidaan käyttää vain, jos toimitetaan vain yksi tunnuslause.

–passphrase-file file

Lue tunnuslause tiedostosta. Vain ensimmäinen rivi luetaan tiedostotiedostosta. Tätä voidaan käyttää vain, jos toimitetaan vain yksi tunnuslause. On selvää, että tiedostoon tallennettu salasana on kyseenalainen turvallisuus, jos muut käyttäjät voivat lukea tämän tiedoston. Älä käytä tätä vaihtoehtoa, jos et voi välttää sitä.

– tunnuslause merkkijono

Käytä merkkijonoa tunnuslauseena. Tätä voidaan käyttää vain, jos vain yksi tunnuslause toimitetaan. Ilmeisesti tämä on erittäin kyseenalainen turvallisuus monen käyttäjän järjestelmässä. Älä käytä tätä vaihtoehtoa, jos voit välttää sen.

add --pinentry-mode loopback toimiakseen

Huomaa, että versiosta 2.0 lähtien tätä salasanaa käytetään vain, jos myös vaihtoehto –batch on annettu . Versiosta 2.1 lähtien myös –pinentry-tila on asetettava loopbackiin.

Esimerkiksi:

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

Kommentit

  • Ovatko --batch ja --pinentry-mode loopback vaihtoehdot, joita tarvitaan –passphrase … -vaihtoehdon toimimiseksi? Versiossa v.2.1.18 tietosivulla sanotaan sama asia (mutta ei man-sivua) erä & pinentrystä, mutta se toimii silti vain –pinentryn kanssa … Jos molemmat todellakin tarvitaan versiolle v.2.2.7, sitten asiat ovat naurettavia, kehittäjät esittävät tarkoituksella vakavia vikoja

vastaus

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 

vastaus

Se toimi minulle kuin taikaa:

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

Kommentit

  • virhe: gpg: no valid OpenPGP data found. gpg: processing message failed: eof. Onko sinulla ideoita?

Vastaa

oletko kokeillut:

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

Lähde: täällä

Vastaa

Kuten man gpg: ssä mainitaan, seuraavaa vaihtoehtoa voidaan käyttää.

– pinentry-tila-tila Aseta pinentry-tila tilaan. Tilan sallitut arvot ovat:

 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. 

Joten gpg: n oletuskäyttäytyminen on pyytää käyttäjää antamaan salasana, jos vaihdat tämän agentti-tilan ”–pinentry-tilaan loopback ”Se toimii täydellisesti. täydellinen komento

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

Vastaa

Mielestäni melko turvallinen tapa siirtää komentorivin salasana on tämä:

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

Tämä tarkoittaa, että kutee ”echo” -komento ja välitetään tiedostokuvaaja polun nimellä gpg (esim. / dev / fd / 63). gpg lukee sitten avaimen sieltä. Sillä välin kaiku-komennon tulisi toimia rinnakkain ja sen pitäisi päättyä heti, jättäen avaimen fd: n puskuriin.

Edut ovat:

  • gpg-komennon komentorivillä ei ole salasanaa
  • Kaiku on lyhytikäinen. Itse asiassa sen pitäisi olla melkein välitön.
  • Salasana ei koskaan asu levyllä, poistettavaa tiedostoa ei tule ja jos komento keskeytetään, siinä ei ole jäämiä

Vastaus

Et usko minua, kun kerron sinulle, että ubuntussa gpg yrittää kysyä salasanasi, jos $ DISPLAY on asetettu ja ottaa sen komentoriviltä – salasana, jos poistat sen. Tämä toimii odotetulla tavalla:

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

Luulen vain yhden esimerkin ylisuunnittelusta.

Vastaa

Tässä ”sa linkki stackoverflow -vastaukseen, josta voi olla apua. Minulla on projekti, joka tekee salauksen purkamisen / salauksen ja koska GnuPG on hyvin tiukka salalauseista, oppi kovalla tavalla, että --passphrase toimii vain harvoissa tilanteissa. Harkitse sen sijaan --passphrase-fd -vaihtoehto on luotettavampi.

Tämä -skripti tekee oikeasta --passphrase -fd -vaihtoehdon käyttö, ja se on testattu julkisesti Travis-CI : n kautta, josta löydät lokit toiminnasta.

Nyt en aio lähettää vain linkkejä vastaukseen antamatta tässä esimerkkikoodia, joten tässä on päivitetty ”erillinen” käsikirjoitus, jolla voit pelata:

#!/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}>&- 

Vaikka yllä oleva ei ole niin hienoa kuin li nked protection GitHubissa sen pitäisi olla vielä toimivampi kuin tämän viestin alkuun linkitetty vastaus.

Hyvää hakkerointia.

Vastaa

Yksi yksinkertainen menetelmä, jonka löysin työskentelevän linux-koneella, on: 1) Tuo avain gpg: => shelliin> gpg – Tuo yksityinen avain.key

2) pura tiedostotunnuksen antamisen purku: => shell> gpg —output -d

2.1) Yllä olevan komennon antaminen kehottaa sinua syöttämään parafraasin. Syötä parafraasi ja se purkaa gpg-tiedoston.

Vastaa

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

Kommentit

  • olisi mukavaa, jos voisit selittää, miksi tämän pitäisi korjata ongelma
  • Vaikka tämä koodinpätkä voi ratkaista kysymyksen, mukaan lukien selitys todella auttaa parantamaan viestisi laatua. Muista, että vastaat kysymykseen lukijoille tulevaisuudessa, ei vain nyt kysyvälle! muokkaa vastaustasi, jotta voit lisätä selityksen ja ilmoittaa, mitä rajoituksia ja oletuksia sovelletaan.

Vastaa

Laita ~/.gnupg/gpg.conf: n loppuun:

use-agent pinentry-mode loopback 

Laita (ehkä uuden) tiedoston loppuun ~/.gnupg/gpg-agent.conf:

allow-loopback-pinentry 

Ja suorita sitten tämä komento :

echo RELOADAGENT | gpg-connect-agent 

Nyt voit suorittaa tämän pyytämättä salasanaa:

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" 

Jossa $ 1 on salattava teksti, $ 2 on käyttäjätunnus ja $ 3 salasana.

Huomaa: en muista, miksi se toimii, mutta se toimii. Jos tiedät yksityiskohdat, muokkaa ja lisää tähän.

Vastaus

Ubuntu 18.04: lle tämä toimi minulle-

salaa:

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

salauksen purkaminen:

gpg some-file.tgz.gpg 

vastaus

Jopa minulla oli sama ongelma. Mutta yksikään o f tässä mainitut komennot eivät toimineet ja tarkistan myös erilaisia vastauksia eri komennoilla, mutta mikään ei toiminut.

Olin Ubuntu 20.04.1 LTS

Paljon pään törmäämisen ja jotenkin kokeilun jälkeen

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

passphrase.txt sisältää passphrase.txt-tiedostosi, ilmeisesti.

Toivottavasti se auttaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *