Вопрос Как использовать GnuPG с --passphrase?


Я хочу написать сценарий, который будет запускаться gpg файл под названием «файл» с паролем «тест».

Обычно, когда я использую gpg, Я обычно просто запускаю gpg -c file и он спрашивает у меня пароль. Но так как я хочу, чтобы этот скрипт выполнял все сам по себе, я хотел бы предоставить кодовую фразу как часть команды.

Теперь, когда я пытаюсь использовать: gpg -c file --passphrase test, он выводит:

использование: gpg [options] --symmetric [имя_файла]

Какие подобные швы хотят, чтобы я использовал gpg --passphrase test --symmetric file, Но если я это сделаю, в нем появится диалоговое окно с просьбой использовать кодовую фразу; что я не хочу.

Как правильно настроить аргументы?


10
2017-09-12 21:24


происхождения




ответы:


В GnuPG параметры должны содержать команды, поэтому --passphrase вариант должен быть до --symmetric,

Что касается окна ввода буфера, которое всплывает в любом случае (хотя вы используете --passphrase), вы, вероятно, уже используете GnuPG 2, что требует --batch для использования вместе с --passphrase, С man-страниц:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

Имейте в виду, что в многопользовательских системах все остальные пользователи смогут прочитать вашу командную строку и, следовательно, также кодовую фразу, пока выполняется GnuPG. Лучше использовать один из других --passphrase-* вместо этого вместо этого следует читать из файла или трубы.


5
2017-09-13 11:10



Вы говорите, что мой порядок --passphrase а также --symmetric аргументы были действительно правильными, но я только пропускал --batch аргумент? Потому что это не сработало для меня. Я попытался добавить --batch как до и после, на всякий случай. Кроме того, я не могу проверить, является ли то, что я использую, GPG 2, но часть, которую вы вставили, которая говорит Note that this passphrase is only used if the option --batch has also been given. не существует в моем man стр.
Какую операционную систему / дистрибуцию вы используете? gpg --version должен предоставить информацию о версии GnuPG, которую вы используете. У вас есть gpg2 двоичная? - Jens Erat
Я использую Xubuntu 14.04., Версия gpg 1.4.16. Вдохновленный вашими комментариями, я узнал, что gpg2 разрабатывается отдельно, поэтому я установил его и опробовал, но он жалуется, что no valid OpenPGP data found. processing message failed: Unknown system error
Дженс, ты супер потрясающий и отвечаешь на множество вопросов с большими ответами, но ты ошибаешься в одной точке: «параметры должны предшествовать командам, поэтому параметр« passphrase »должен быть до -симметричным». Не совсем. - rsaw
@rsaw: Вы частично правы - за --symmetric а также --passphrase, порядок, по-видимому, не имеет отношения к делу, но --export и определить --armor после этого. Как правило, параметры должны предшествовать командам, который также является порядком, определенным на страницах руководства. - Jens Erat


Если gpg --version отчетов v2, вам нужно добавить --batch вариант.

На основе вывода синтаксиса вы, вероятно, используете v1, и в этом случае вы хотите:

gpg --passphrase PASS -c --no-use-agent FILE

Обратите внимание, что порядок опций не важен; однако любой файл должен быть последним аргументом.


2
2017-09-14 03:41





С помощью --pinentry-mode loopback работает с --passphrase & --passphrase-[file/fd], и позволит вам вводить новую информацию, например, в случае конфликтов имен файлов:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

В отличие от --batch который быстро потерпит неудачу, сказав ...failed: File exists


Если вы первоначально добавили подробный вариант (-v) во-первых, вы должны были увидеть что-то вроде:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

что довольно ясно показывает, что ему не понравилось что-то -c (--symmetric) первый.


Я считаю, что поведение gpg2 игнорируется --passphrase варианты, если они не сопровождаются --batch как ошибка.


0
2017-12-29 04:46