Bagaimana cara menggunakan GnuPG dengan --passphrase?

11

Saya ingin menulis skrip yang akan menjalankan gpgfile bernama "file" dengan frasa sandi "test".

Biasanya, ketika saya gunakan gpg, saya biasanya hanya berlari gpg -c filedan meminta saya untuk frasa sandi. Tetapi karena saya ingin skrip ini melakukan semuanya sendiri, saya ingin memberikan frasa sandi sebagai bagian dari perintah.

Sekarang ketika saya mencoba menggunakan gpg -c file --passphrase test:, ini menghasilkan:

penggunaan: gpg [opsi] --simetri [nama file]

Lapisan yang seperti itu ingin saya gunakan gpg --passphrase test --symmetric file. Tetapi jika saya melakukan itu, muncul dialog yang meminta saya untuk menggunakan frasa sandi; yang bukan itu yang saya inginkan.

Bagaimana saya mengatur argumen dengan benar?

Jens Erat
sumber

Jawaban:

7

Di GnuPG, opsi harus didahului perintah, sehingga --passphraseopsi harus datang sebelumnya --symmetric.

Mengenai jendela entri pin, yang tetap muncul (meskipun Anda menggunakan --passphrase), Anda mungkin sudah menggunakan GnuPG 2, yang mengharuskan --batchuntuk digunakan bersama --passphrase. Dari halaman manual:

--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.

Perlu diketahui bahwa pada sistem multi-pengguna, semua pengguna lain akan dapat membaca baris perintah Anda, dan dengan demikian juga frasa sandi saat GnuPG dieksekusi. Lebih baik gunakan salah satu --passphrase-*opsi lain daripada membaca dari file atau pipa.

Jens Erat
sumber
Apa yang Anda katakan adalah bahwa urutan --passphrasedan --symmetricargumen saya benar, tetapi saya hanya melewatkan --batchargumen itu? Karena itu tidak berhasil untuk saya. Saya sudah mencoba menambahkan --batchsebelum dan sesudah, untuk berjaga-jaga. Juga, saya tidak tahu bagaimana memeriksa apakah yang saya gunakan adalah GPG 2, tetapi bagian yang Anda tempel yang mengatakan Note that this passphrase is only used if the option --batch has also been given.tidak ada di manhalaman saya .
Sistem / distribusi operasi apa yang Anda gunakan? gpg --versionharus memberikan informasi tentang versi GnuPG yang Anda gunakan. Apakah Anda memiliki gpg2biner?
Jens Erat
Saya menggunakan Xubuntu 14.04., Versi gpg1.4.16. Terinspirasi oleh komentar Anda, saya menemukan bahwa gpg2 sedang dikembangkan secara terpisah, jadi saya menginstalnya dan mencobanya, tetapi ia mengeluh bahwano valid OpenPGP data found. processing message failed: Unknown system error
Jens Anda super luar biasa dan menjawab banyak pertanyaan dengan jawaban luar biasa, tetapi Anda salah pada satu titik: "opsi harus mendahului perintah, sehingga opsi - passphrase harus ada sebelum --simetris." Tidak benar sama sekali.
rsaw
@rsaw: Anda sebagian benar - untuk --symmetricdan --passphrase, urutannya tampaknya tidak relevan, tetapi cobalah untuk --exportmendefinisikannya --armorsetelah itu. Umumnya, opsi harus mendahului perintah, yang juga merupakan urutan yang ditentukan dalam halaman manual.
Jens Erat
2

Jika gpg --versionmelaporkan v2, Anda perlu menambahkan --batchopsi.

Berdasarkan output sintaks Anda mungkin menggunakan v1, dalam hal ini yang Anda inginkan:

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

Perhatikan bahwa urutan opsi tidak penting; Namun, file apa pun harus menjadi argumen terakhir.

rsaw
sumber
1

Menggunakan --pinentry-mode loopbackworks with --passphrase& --passphrase-[file/fd], dan akan memungkinkan Anda memasukkan info baru, jika terjadi konflik nama file misalnya:

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

tidak seperti --batchitu akan cepat gagal, mengatakan...failed: File exists


Jika Anda awalnya menambahkan opsi verbose ( -v) terlebih dahulu, Anda seharusnya melihat sesuatu seperti:

$ 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]

menunjukkan cukup jelas bahwa itu tidak suka sesuatu tentang menempatkan -c( --symmetric) terlebih dahulu.


Saya menganggap perilaku mengabaikan --passphraseopsi gpg2 kecuali disertai dengan --batchbug.

Xen2050
sumber