Як користуватися GnuPG з --passphrase?


11

Я хочу написати сценарій, який запустить gpgфайл під назвою "файл" із парольною фразою "тест".

Зазвичай, коли я користуюсь 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

Jens ти надзвичайно чудовий і відповідаєш на безліч питань з чудовими відповідями, але помиляєшся в одному пункті: "параметри повинні передувати командам. Таким чином, параметр --passphrase повинен бути раніше - несиметричним". Не зовсім правда.
rsaw

@rsaw: Ви частково маєте рацію - бо, --symmetricі --passphraseзамовлення, здається, не є актуальним, але спробуйте це --exportвизначити і визначити --armorзгодом. Як правило, параметри повинні передувати командам, що також є порядком, визначеним на сторінках man.
Єнс Ерат

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


Якщо ви спочатку додали паралельний варіант ( -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.