Làm cách nào để sử dụng GnuPG với --passphrase?


11

Tôi muốn viết một tập lệnh sẽ chạy gpgmột tệp có tên là "tệp" với cụm mật khẩu "kiểm tra".

Thông thường, khi tôi sử dụng gpg, tôi thường chỉ chạy gpg -c filevà nó hỏi tôi cụm mật khẩu. Nhưng vì tôi muốn tập lệnh này tự làm mọi thứ, tôi muốn cung cấp cụm mật khẩu như một phần của lệnh.

Bây giờ khi tôi cố gắng sử dụng : gpg -c file --passphrase test, nó xuất ra:

cách sử dụng: gpg [tùy chọn] --symmetric [tên tệp]

Những đường nối như nó muốn tôi sử dụng gpg --passphrase test --symmetric file. Nhưng nếu tôi làm điều đó, nó sẽ bật lên một hộp thoại yêu cầu tôi sử dụng cụm mật khẩu; đó không phải là điều tôi muốn

Làm thế nào để tôi thiết lập các đối số chính xác?

Câu trả lời:


7

Trong GnuPG, các --passphrasetùy chọn phải đi trước các lệnh, do đó tùy chọn phải đến trước --symmetric.

Về cửa sổ nhập mã pin, dù sao nó cũng bật lên (mặc dù bạn sử dụng --passphrase), có lẽ bạn đã sử dụng GnuPG 2, yêu cầu --batchphải được sử dụng cùng với --passphrase. Từ trang người đàn ông:

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

Xin lưu ý rằng trên các hệ thống nhiều người dùng, tất cả người dùng khác sẽ có thể đọc dòng lệnh của bạn và do đó cũng là cụm mật khẩu trong khi GnuPG được thực thi. --passphrase-*Thay vào đó, tốt hơn là sử dụng một trong các tùy chọn khác để đọc từ tệp hoặc đường ống.


Điều bạn đang nói là thứ tự --passphrasevà các --symmetricđối số của tôi thực sự chính xác, nhưng tôi chỉ thiếu --batchđối số? Bởi vì điều đó không làm việc cho tôi. Tôi đã cố gắng thêm --batchcả trước và sau, chỉ trong trường hợp. Ngoài ra, tôi không biết cách kiểm tra xem những gì tôi đang sử dụng có phải là GPG 2 hay không, nhưng phần bạn đã dán Note that this passphrase is only used if the option --batch has also been given.không tồn tại trong mantrang của tôi .

Bạn đang sử dụng hệ điều hành / phân phối nào? gpg --versionsẽ cung cấp thông tin về phiên bản GnuPG mà bạn đang sử dụng. Bạn có gpg2nhị phân không?
Jens Erat

Tôi đang sử dụng Xubfox 14.04., Phiên bản gpglà 1.4.16. Lấy cảm hứng từ ý kiến ​​của bạn, tôi phát hiện ra rằng gpg2 đang được phát triển riêng biệt, vì vậy tôi đã cài đặt nó và dùng thử, nhưng nó phàn nàn rằngno valid OpenPGP data found. processing message failed: Unknown system error

Jens bạn siêu tuyệt vời và trả lời rất nhiều câu hỏi với câu trả lời tuyệt vời, nhưng bạn đã sai ở một điểm: "các tùy chọn phải đi trước các lệnh, do đó, tùy chọn --passph khẩu phải xuất hiện trước - đối xứng." Không đúng chút nào.
rsaw

@rsaw: Bạn đúng một phần - vì --symmetric--passphrase, thứ tự dường như không liên quan, nhưng hãy thử --exportvà xác định --armorsau đó. Nói chung, các tùy chọn phải đặt trước các lệnh, đây cũng là thứ tự được xác định trong các trang man.
Jens Erat

2

Nếu gpg --versionbáo cáo v2, bạn cần thêm --batchtùy chọn.

Dựa trên đầu ra cú pháp có thể bạn đang sử dụng v1, trong trường hợp bạn muốn:

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

Lưu ý rằng thứ tự của các tùy chọn không quan trọng; tuy nhiên, bất kỳ tập tin cần phải là đối số cuối cùng.


1

Sử dụng --pinentry-mode loopbackcác công việc với --passphrase& --passphrase-[file/fd], và sẽ cho phép bạn nhập thông tin mới, trong trường hợp xung đột tên tệp chẳng hạn:

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

Không giống như --batchđiều đó sẽ nhanh chóng thất bại, nói...failed: File exists


Nếu ban đầu bạn đã thêm tùy chọn verbose ( -v) trước tiên, bạn sẽ thấy một cái gì đó như:

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

chỉ ra khá rõ ràng rằng nó không thích cái gì đó về việc đặt -c( --symmetric) lên hàng đầu.


Tôi xem xét hành vi bỏ qua --passphrasecác tùy chọn của gpg2 trừ khi --batchcó lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.