Я ожидаю, что следующая команда извлечет файл gpg без запроса пароля:
gpg --passphrase 1234 file.gpg
Но он просит пароль. Почему?
Это также имеет такое же поведение:
gpg --passphrase-file passfile.txt file.gpg
Я использую Ubuntu с GNOME 3 и помню, что он работал в Fedora
shell-script
gpg
Омид
источник
источник
gpg
запускаете правильную команду, а не псевдоним или оболочку? Попробуйте/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
иset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
запрашивается пароль, а в GPG 1.x - нет. Это была моя проблема (в программе, которую я пишу), в то время как я думал, что у меня есть ваша проблема (вещь --list-packages была выполнена сначала, прежде чем пытаться расшифровать, и я не заметил). Итак, я сделал новый способ определить, были ли файлы зашифрованы.Ответы:
Я в той же лодке (она работала на Fedora, но не на Ubuntu). Вот очевидная работа вокруг, которую я обнаружил:
Объяснение: Передача
0
причин--passphrase-fd
для чтения из STDIN, а не из файла. Таким образом, передача парольной фразы позволит--passphrase-fd
принять указанную вами строку пароля.источник
--batch --yes
к вышесказанному сработало для меня.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. Как мне это решить?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
похоже, работает.Inappropriate ioctl for device
с и без--batch
здесь (на gpg (GnuPG) 2.1.18).echo "hello" | cat
иecho "hello"| cat
оба дают одну и ту же строку.Модернизированный 2017-12-04. (Добавление --batch для предотвращения запроса пароля)
Возможно, вам придется добавить
--batch
опцию:Начиная с версии 2
GPG
, опция--batch
необходима, чтобы гарантировать отсутствие запроса ... Хорошо, глядя, что:Попытка:
звучит неплохо! Ну теперь:
Хотя
-d
параметр не указан (тот же синтаксис, что и в вопросе SO), расшифрованные данныеfile.gpg
будут извлечены в новыйfile
.Это хорошо работает!
источник
--passphrase
Параметр работает для пакетных операций, а не запрашивать пароль.unset GPG_AGENT_INFO
и дажеGPG_AGENT_INFO=/dev/null
, это (продолжать) работать ... Может быть, отключение$GPG_AGENT_INFO
может помочь !? (Дайте нам знать; пожалуйста, ответьте, я отредактирую, если это поможет!)Для gpg версии 2.x вам не нужно использовать
--batch
, простоработает с
--passphrase
&--passphrase-file
, и позволит вам ввести новую информацию, в случае конфликта имен файлов, например:в отличие от
--batch
этого быстро потерпит неудачу, говоря...failed: File exists
(протестировано на Debian Stable / Stretch's gpg 2.1.18. Такое поведение игнорирования важных
--passphrase
опций действительно должно быть ошибкой, если это еще не сделано)источник
Похоже, вы используете gpg2. Вы должны добавить
--batch
опцию. (Если вы планируете добавить это в скрипт, вы также захотите добавить его--no-tty
и, возможно,.--yes
)источник
для меня добавление «--no-use-agent» решило эту проблему для «gpg (GnuPG) 1.4.16»:
источник
При использовании gpg (GnuPG) 2.2.7 Согласно справочной странице,
добавить
--pinentry-mode loopback
, чтобы работатьНапример:
источник
--batch
и--pinentry-mode loopback
параметры для любого параметра --passphrase ...? На v.2.1.18 информационная страница говорит то же самое (но не справочную страницу) о необходимости batch & pinentry, но все еще работает только с --pinentry ... Если для v.2.2.7 действительно необходимы оба, тогда становятся смешными, разработчики специально вводят серьезные ошибкиЭто сработало как волшебство для меня:
источник
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. Есть идеи?источник
Вы пытались сделать:
Источник: Здесь
источник
Я думаю, что довольно безопасный способ передачи пароля в командную строку заключается в следующем:
Для этого нужно создать команду «echo» и передать дескриптор файла в качестве пути к gpg (например, / dev / fd / 63). Затем gpg прочитает ключ оттуда. В то же время, команда echo должна выполняться параллельно и завершаться мгновенно, оставляя ключ в буфере fd.
Преимущества:
источник
Вы не поверите мне, когда я скажу вам, что в ubuntu gpg пытается спросить ваш пароль, если установлен $ DISPLAY, и берет его из командной строки --password, если вы его сбросили. Это работает как ожидалось:
Думаю, просто еще один пример чрезмерного проектирования.
источник
Вот ссылка на ответ stackoverflow, который может быть дополнительной помощи; У меня есть проект, который выполняет массовое дешифрование / шифрование, и благодаря тому, что GnuPG очень строго относится к парольным фразам, я научился трудному способу, который
--passphrase
работает только в редких случаях. Вместо этого рассмотрите--passphrase-fd
вариант, чтобы быть более надежным.Этот скрипт делает правильное использование
--passphrase -fd
опции, и был протестирован публично через Travis-CI , где вы можете найти журналы в действии.Теперь я не собираюсь просто публиковать ссылки на ответ, не предоставив здесь пример кода, поэтому вот обновленный «автономный» скрипт, с которым вы можете поиграть:
Хотя вышесказанное не так сложно, как связанная защита в GitHub, оно должно быть еще более функциональным, чем ответ, приведенный в начале этого поста.
Счастливого взлома.
источник
Как уже упоминалось в man gpg, можно использовать следующую опцию
--pinentry-mode mode Установите режим пинентри в режим. Допустимые значения для режима:
Поэтому поведение gpg по умолчанию - запрашивать пароль у пользователя, если изменить режим этого агента пользователя на «--pinentry-mode loopback». Он прекрасно работает. завершить команду
источник
Один простой метод, который я нашел, работая на машине с Linux, это: 1) импортировать ключ в gpg: => shell> gpg - импортировать private_key.key
2) расшифровать, указав имя выходного файла: => shell> gpg —output -d
2.1) Приведенная выше команда предложит вам ввести перефразировку. Введите парафраз, и он расшифрует файл gpg.
источник
источник
Поместите в конце
~/.gnupg/gpg.conf
:Поместите в конец (возможно, новый) файл
~/.gnupg/gpg-agent.conf
:И затем выполните эту команду:
Теперь вы можете запустить это без запроса пароля:
Где $ 1 - текст для шифрования, $ 2 - идентификатор пользователя, а $ 3 - пароль.
Примечание: я не могу вспомнить, почему это работает, но это работает. Если вы знаете детали, пожалуйста, отредактируйте и вставьте сюда.
источник
для Ubuntu 18.04 это работало для меня
зашифровать:
расшифровывать:
источник