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


11

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

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

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

использование: gpg [параметры] --симметричный [имя файла]

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

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

Ответы:


7

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

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

--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-*опций вместо чтения из файла или канала.


То , что вы говорите, что мой порядок --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бинарный файл?
Йенс Эрат

Я использую Xubuntu 14.04., Версия gpg1.4.16. Вдохновленный вашими комментариями, я обнаружил, что gpg2 разрабатывается отдельно, поэтому я установил его и опробовал, но он жалуется, чтоno valid OpenPGP data found. processing message failed: Unknown system error

Дженс, вы супер крутые и отвечаете на множество вопросов с отличными ответами, но вы ошибаетесь в одном: «опции должны предшествовать командам, поэтому опция --passphrase должна предшествовать --symmetric». Совсем не правда.
Рассмотрение

@rsaw: Вы частично правы - для --symmetricи --passphrase, порядок, кажется, не актуален, но попробуйте --exportи определите --armorпотом. Как правило, опции должны предшествовать командам, что также является порядком, определенным на страницах руководства.
Йенс Эрат

2

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

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

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

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


1

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

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

в отличие от --batchэтого быстро потерпит неудачу, говоря...failed: File exists


Если вы сначала добавили verbose option ( -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ошибкой.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.