Oczekuję, że następujące polecenie wypakuje plik gpg bez pytania o hasło:
gpg --passphrase 1234 file.gpg
Ale prosi o hasło. Dlaczego?
Ma to również takie samo zachowanie:
gpg --passphrase-file passfile.txt file.gpg
Używam Ubuntu z gnome 3 i pamiętam, że działało to w Fedorze
shell-script
gpg
Omid
źródło
źródło
gpg
uruchom odpowiednie polecenie, a nie alias ani opakowanie? Spróbuj/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
iset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
monituje o podanie hasła, podczas gdy w GPG 1.x nie. To był mój problem (w programie, który piszę), podczas gdy myślałem, że mam twój problem (rzecz - pakiety -list zostały wykonane najpierw, zanim spróbowałem odszyfrować, i nie zauważyłem). Dlatego stworzyłem nowy sposób, aby ustalić, czy pliki zostały zaszyfrowane.Odpowiedzi:
Jestem dokładnie w tej samej łodzi (działało na Fedorze, ale nie na Ubuntu). Oto widoczna praca, którą odkryłem:
Objaśnienie: Przekazywanie
0
powoduje--passphrase-fd
odczyt z STDIN, a nie z pliku. Zatem potokowanie hasła spowoduje--passphrase-fd
zaakceptowanie określonego ciągu hasła.źródło
--batch --yes
do powyższego działało dla mnie.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. Jak to rozwiązać?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
wydaje się działać.Inappropriate ioctl for device
się--batch
tutaj i bez (na gpg (GnuPG) 2.1.18).echo "hello" | cat
iecho "hello"| cat
oba dają ten sam ciąg.Ulepszony 2017-12-04. (Dodanie --batch, aby zapobiec wyświetlaniu monitu o hasło)
Może być konieczne dodanie
--batch
opcji:Od wersji 2
GPG
tej opcji--batch
jest wymagana, aby nie wyświetlać monitu ... Ok, patrząc, że:Próbować:
brzmi dobrze! Więc teraz:
Chociaż nie
-d
podano żadnego parametru (ta sama składnia jak pytanie SO), odszyfrowane danefile.gpg
zostaną wyodrębnione do nowegofile
.To działa dobrze!
źródło
--passphrase
parametr działa w przypadku operacji wsadowych i nie monituje o hasło.unset GPG_AGENT_INFO
a nawetGPG_AGENT_INFO=/dev/null
, to (kontynuowanie) działa ... Może niepokojące$GPG_AGENT_INFO
może pomóc !? (Daj nam znać; proszę odpowiedzieć,W przypadku wersji gpg 2.x nie musisz jej używać
--batch
, po prostuwspółpracuje z
--passphrase
&--passphrase-file
i pozwoli Ci wprowadzić nowe informacje, na przykład w przypadku konfliktu nazw plików:inaczej
--batch
to szybko zawiedzie, mówiąc...failed: File exists
(testowane na gpg 2.1.18 Debiana Stable / Stretch. Takie zachowanie polegające na ignorowaniu ważnych
--passphrase
opcji naprawdę powinno być błędem, jeśli jeszcze nie jest)źródło
Wygląda na to, że używasz gpg2. Musisz także wrzucić
--batch
opcję. (Jeśli planujesz dodać to do skryptu, będziesz również chciał dodać--no-tty
i prawdopodobnie--yes
.)źródło
dla mnie dodanie „--no-use-agent” rozwiązało to dla „gpg (GnuPG) 1.4.16”:
źródło
Jeśli używasz gpg (GnuPG) 2.2.7 Według strony podręcznika,
dodaj
--pinentry-mode loopback
, aby pracowaćNa przykład:
źródło
--batch
i--pinentry-mode loopback
opcje są potrzebne do działania dowolnej opcji --passphrase ...? W wersji 2.1.18 strona informacyjna mówi to samo (ale nie strona podręcznika) o potrzebnej partii i pinentry, ale nadal działa tylko z - pinentry ... Jeśli obie wersje są naprawdę potrzebne w wersji 2.2.7, to rzeczyDla mnie działało to jak magia:
źródło
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. Jakieś pomysły?źródło
próbowałeś zrobić:
Źródło: tutaj
źródło
Myślę, że dość bezpieczną metodą przekazania hasła do wiersza poleceń jest:
Spowoduje to odrodzenie polecenia „echo” i przekazanie deskryptora pliku jako nazwy ścieżki do gpg (np. / Dev / fd / 63). gpg odczyta stamtąd klucz. W międzyczasie polecenie echa powinno działać równolegle i kończyć natychmiast, pozostawiając klawisz na buforze fd.
Korzyści to:
źródło
Nie uwierzysz mi, kiedy powiem ci, że na Ubuntu gpg próbuje zapytać o twoje hasło, czy $ DISPLAY jest ustawione i bierze je z wiersza poleceń - hasło, jeśli je rozbroisz. Działa to zgodnie z oczekiwaniami:
To chyba kolejny przykład nadmiernej inżynierii.
źródło
Oto link do odpowiedzi na przepełnienie stosu, która może być dalszą pomocą; Mam projekt, który dokonuje masowego deszyfrowania / szyfrowania, a ponieważ GnuPG jest bardzo rygorystyczny w odniesieniu do haseł, nauczyłem się trudnej drogi, która
--passphrase
działa tylko w rzadkich przypadkach. Zamiast tego rozważ--passphrase-fd
opcję bardziej niezawodną.Ten scenariusz sprawia prawidłowe korzystanie z
--passphrase -fd
opcji, które były testowane publicznie przez Travis-ci , gdzie można znaleźć dzienniki go w akcji.Teraz nie zamierzam po prostu zamieszczać linków do odpowiedzi, nie podając tutaj przykładowego kodu, więc oto zaktualizowany „samodzielny” skrypt, w który można grać:
Chociaż powyższe nie jest tak wymyślne, jak ochrona połączona w GitHub, powinna być jeszcze bardziej funkcjonalna niż odpowiedź podana na początku tego postu.
Miłego hakowania.
źródło
Jak wspomniano w man gpg, można użyć następującej opcji
- tryb pinentry Ustaw tryb pinentry na tryb. Dozwolone wartości dla trybu to:
Więc domyślnym zachowaniem gpg jest monitowanie użytkownika o podanie hasła, jeśli zmienisz ten tryb agenta użytkownika na „- loopback-mode-loopback”. Działa to doskonale. kompletne polecenie
źródło
Jedną z prostych metod, które znalazłem podczas pracy na komputerze z systemem Linux, jest: 1) importuj klucz do gpg: => shell> gpg - import private_key.key
2) odszyfruj podając nazwę pliku wyjściowego: => shell> gpg —output -d
2.1) Podanie powyższego polecenia spowoduje wyświetlenie parafrazy. Wpisz parafrazę, a ona odszyfruje plik gpg.
źródło
źródło
Umieść na końcu
~/.gnupg/gpg.conf
:Umieść na końcu (być może nowego) pliku
~/.gnupg/gpg-agent.conf
:A następnie uruchom to polecenie:
Teraz możesz uruchomić to bez pytania o hasło:
Gdzie 1 USD to tekst do zaszyfrowania, 2 USD to identyfikator użytkownika, a 3 USD hasło.
Uwaga: nie pamiętam, dlaczego to działa, ale działa. Jeśli znasz szczegóły, edytuj i wstaw tutaj.
źródło