จะใช้ GnuPG ด้วย --passphrase อย่างไร


11

ฉันต้องการเขียนสคริปต์ที่จะเรียกใช้gpgไฟล์ที่เรียกว่า "ไฟล์" ด้วยข้อความรหัสผ่าน "ทดสอบ"

โดยปกติเมื่อฉันใช้gpgฉันมักจะเรียกใช้gpg -c fileและมันถามฉันสำหรับวลีรหัสผ่าน แต่เนื่องจากฉันต้องการให้สคริปต์นี้ทำทุกอย่างด้วยตัวเองฉันจึงต้องการให้ข้อความรหัสผ่านเป็นส่วนหนึ่งของคำสั่ง

ตอนนี้เมื่อฉันพยายามใช้: gpg -c file --passphrase testมันจะแสดงผล:

การใช้งาน: gpg [ตัวเลือก] --symmetric [filename]

gpg --passphrase test --symmetric fileซึ่งตะเข็บเหมือนมันอยากให้ผมใช้ แต่ถ้าฉันทำอย่างนั้นมันจะปรากฏข้อความเพื่อขอให้ฉันใช้วลีรหัสผ่าน; ซึ่งไม่ใช่สิ่งที่ฉันต้องการ

ฉันจะตั้งค่าข้อโต้แย้งได้อย่างถูกต้องได้อย่างไร?

คำตอบ:


7

ใน GnuPG ตัวเลือกคำสั่งต้อง preced ดังนั้นตัวเลือกที่จะต้องมาก่อน--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เลขฐานสองหรือไม่?
Jens Erat

ฉันใช้ 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 page
Jens Erat

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 ( -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ข้อผิดพลาด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.