2012-07-08 34 views
56

tôi đang cố gắng để tự động sao lưu với duplicity, nhưng khi tôi kiểm tra kết quả, tôi nhận đượcLàm thế nào để sử dụng gpg dòng lệnh để kiểm tra mật khẩu là đúng

gpg: giải mã khóa công khai thất bại: cụm từ mật khẩu xấu

Tôi muốn kiểm tra xem cụm mật khẩu tôi đang sử dụng có phải là cụm mật khẩu được liên kết với khóa bí mật gpg tương ứng hay không, nhưng tôi không thể thấy trong tùy chọn dòng lệnh gpg để nói "Không mã hóa hoặc giải mã Chỉ cần xác nhận tôi đang sử dụng cụm mật khẩu đúng. "

Điều này cho thấy có thể tôi là (một lần nữa) sự hiểu lầm của Gnu Privacy Guard. (Nó có một khuynh hướng để chế nhạo tôi cho đến khi tôi khóc.)

Bạn có yêu cầu gpg xác minh cụm mật khẩu không? Nếu vậy, làm thế nào?

Trả lời

82

Không có phương pháp tích hợp để thực hiện việc này, nhưng thật đơn giản để tạo một bài kiểm tra không sửa đổi bất kỳ thứ gì và cho phép bạn chỉ kiểm tra cụm mật khẩu của mình.

Bạn không chỉ định, vì vậy tôi giả sử bạn đang sử dụng phiên bản GnuPG nhỏ hơn phiên bản 2 và đang dùng Linux với Bash cho trình thông dịch dòng lệnh của bạn.

tôi sẽ cung cấp cho các lệnh ở đây và dưới đây tôi sẽ giải thích từng phần không - (lưu ý: đây là cho GnuPG loạt phiên bản 1, xem dưới đây để biết GnuPG loạt v2)

echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

gì đó trước tiên, hãy gửi một số văn bản để ký GnuPG với echo "1234" | - bởi vì chúng tôi không thực sự muốn ký bất cứ điều gì, đây chỉ là một thử nghiệm, vì vậy chúng tôi sẽ ký một số văn bản vô dụng.

Tiếp theo, chúng tôi yêu cầu gpg không sử dụng tác nhân khóa với --no-use-agent; điều này là quan trọng sau này bởi vì, tùy thuộc vào nhân viên chủ chốt của bạn, nó có thể không trả về "0" về thành công, và đó là tất cả những gì chúng tôi muốn làm - xác minh thành công của cụm mật khẩu của bạn.

Tiếp theo, chúng tôi yêu cầu gpg đặt dữ liệu đã ký trực tiếp vào tệp /dev/null, có nghĩa là chúng tôi hủy và không ghi kết quả vào thiết bị đầu cuối - LƯU Ý: nếu bạn không sử dụng một số biến thể của Linux/Unix, tệp này có thể không tồn tại. Trên cửa sổ, bạn có thể phải cho phép nó ghi dữ liệu đã ký vào màn hình bằng cách bỏ qua phần -o /dev/null.

Tiếp theo, chúng tôi chỉ định khóa mà chúng tôi muốn thực hiện thử nghiệm bằng cách sử dụng --local-user. Bạn có thể sử dụng KeyID để có độ đặc hiệu tối đa hoặc sử dụng tên người dùng, tùy theo điều kiện nào phù hợp nhất với nhu cầu của bạn.

Tiếp theo, chúng tôi chỉ định -as, cho phép chế độ đầu ra ascii và đặt chế độ ngữ cảnh để ký. Sau đó, - chỉ yêu cầu GnuPG lấy dữ liệu được ký từ chuẩn, đây là phần đầu tiên của lệnh mà chúng tôi đã cung cấp echo "1234" |.

Và cuối cùng, chúng tôi có && echo "A message that indicates success" - "& &" có nghĩa là, nếu lệnh trước đó thành công, hãy in thông báo này. Điều này chỉ được thêm vào cho rõ ràng, bởi vì sự thành công của lệnh ở trên nếu không sẽ được chỉ ra bởi không có đầu ra nào cả.

Tôi hy vọng điều đó là đủ rõ ràng để bạn hiểu những gì đang diễn ra và cách bạn có thể sử dụng nó để thực hiện thử nghiệm bạn muốn thực hiện. Nếu bất kỳ phần nào không rõ ràng hoặc bạn không hiểu, tôi sẽ vui lòng làm rõ. Chúc may mắn!

[EDIT] - Nếu bạn đang sử dụng GnuPG v2, lệnh trên sẽ cần phải được sửa đổi một chút, như vậy:

echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

Lý do là, GnuPG v2 hy vọng cụm từ mật khẩu để được lấy thông qua một tác nhân, vì vậy chúng tôi không thể vô hiệu hóa việc sử dụng tác nhân với --no-use-agent và có tác dụng mong muốn; thay vào đó chúng ta cần phải nói với GnuPG v2 rằng chúng ta muốn chạy một tiến trình "batch", và lấy lại mật khẩu từ STDIN (standard in) bằng cách sử dụng tùy chọn --passphrase-fd 1.

+8

Điều này không hoạt động với gpg2, vì nó luôn yêu cầu tác nhân. Ngoài ra các đại lý ncurses bằng cách nào đó bị lẫn lộn bởi các đầu vào đường ống. Vì vậy, tôi chỉ sử dụng 'gpg --local-user -as'. Điều này chỉ cho phép tác nhân yêu cầu cụm từ mật khẩu và cho bạn biết nếu nó là chính xác (Sau đó, không có gì). – BubuIIC

+1

Bạn đúng là BubullC, phần lớn; với sửa đổi nhỏ cho các tùy chọn được thông qua, bạn có thể có kết quả tương tự bằng gpg2. Tôi đã sửa đổi câu trả lời của mình để hỗ trợ sự khác biệt giữa gpg và gpg2. – kylehuff

+2

Hãy thử điều này cho GnuPG 2.1: 'gpg -o/dev/null - người dùng cục bộ -as <(echo 1234) && echo" Cụm mật khẩu chính xác đã được nhập cho khóa này "' – starfry

-2

Chỉ cần đặt cụm mật khẩu của khóa riêng thành "" (trống). Điều đó sẽ cho phép bạn không khai báo đối số mật khẩu trong dòng lệnh, trong khi không nhận được lời nhắc mật khẩu.

dòng lệnh của bạn cho một tập tin duy nhất sau đó nên xem xét đơn giản là một cái gì đó như:

gpg -d file_to_decrypt.pgp 

hoặc cho nhiều tập tin:

gpg -- batch --decrypt-files *.pgp 

Lưu ý: để thay đổi mật khẩu của bạn, bạn có thể làm điều đó thông qua dòng lệnh hoặc sử dụng GUI như Kleopatra hoặc GPA (được khuyến nghị).

+0

Điều này dường như không phải là câu trả lời cho câu hỏi. – Oddthinking

Các vấn đề liên quan