tệp mã hóa gpg mà không có tương tác bàn phím [đã đóng]


84

Tôi đang chạy lệnh tiếp theo trong crontab để mã hóa tệp và tôi không muốn tương tác bàn phím

echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT

nhưng tôi có câu trả lời này:

gpg: C042XXXX: There is no assurance this key belongs to the named user

pub  40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <user@email.com>
 Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX
      Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) 

Vì --passphrase-fd chỉ đọc dòng đầu tiên ... điều gì sẽ xảy ra nếu bạn chạy echo -e "PASSPHRASE" "\nyes" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT?
David Costa

man trang ai? --batch--yes.
u0b34a0f6ae

Câu trả lời:


76

Như David đã nói, vấn đề ở đây là gpg không tin tưởng vào khóa công khai mà bạn đang sử dụng để mã hóa. Bạn có thể ký vào chìa khóa như anh ấy giải thích.

Một giải pháp thay thế - đặc biệt nếu khóa có thể thỉnh thoảng thay đổi - sẽ là gắn vào --trust-model always dụng lệnh gpg của bạn.

Đây là thông tin liên quan từ trang người đàn ông:

--trust-model pgp|classic|direct|always|auto

     Set what trust model GnuPG should follow. The models are:

     pgp    This is the Web of Trust combined with trust signatures as used in
            PGP 5.x and later. This is the default trust model when creating a
            new trust database.

     classic
            This is the standard Web of Trust as used in PGP 2.x and earlier.

     direct Key validity is set directly by the user and  not  calculated  via
            the Web of Trust.

     always Skip  key  validation  and  assume that used keys are always fully
            trusted. You generally won't use this unless you  are  using  some
            external  validation  scheme.  This  option  also  suppresses  the
            "[uncertain]" tag printed with signature checks when there  is  no
            evidence that the user ID is bound to the key.

     auto   Select  the  trust  model depending on whatever the internal trust
            database says. This is  the  default  model  if  such  a  database
            already exists.

Không hiểu tại sao hệ thống lại nghĩ đó là mã. Tôi đã nhấp vào báo giá; không phải mã. Khi chỉnh sửa, nó chỉ hiển thị dưới dạng trích dẫn (không có màu). Kỳ dị.
rsaw

4
đó là vì văn bản sử dụng khoảng trắng để căn chỉnh.
Tomáš Fejfar

đây là câu trả lời chính xác cho tôi! cảm ơn bạn
eigenfield

46

Đây là giải pháp của tôi, dựa trên gpg2 (nhưng tôi cá là bạn có thể áp dụng kỹ thuật tương tự cho gpg)

$ gpg2 --edit-key {recipient email address}  
> trust
> 5 (select 5 if you ultimately trust the key) 
> save

Điều này sẽ yêu cầu gpg2 tin tưởng hoàn toàn vào khóa để bạn có thể mã hóa mà không cần nhắc


1
Điều này cập nhật tin cậy-db ngay lập tức và không cần lưu.
làn đường

12
Điều này đặt niềm tin của chủ sở hữu không phải là khóa-hợp lệ. Ultimate Trust chỉ dành cho Chìa khóa của riêng bạn. tức là Mọi thứ được ký bởi một Nhận dạng Tin cậy Cuối cùng được xử lý như do chính bạn ký. Vì vậy, ĐỪNG ĐẶT TIN TƯỞNG TỐI ƯU nếu nó không phải là chìa khóa của bạn. Vấn đề là tính hợp lệ của khóa. Để giải quyết / giải quyết vấn đề này, bạn nên ký vào khóa. (xem xét một chữ ký tại địa phương chỉ và xác nhận vân tay)
x539

3
x539 là đúng. sau khi gpg2 --edit-key <key-id>bạn làm lsignsave. Tôi nghĩ rằng sự tin cậy 5 đã được sử dụng sai cho điều này (bị hiểu lầm), và (đối với tôi) nó thậm chí không hiệu quả (vô dụng), vì những gì x539 đã nói.
n611x007

Lưu ý rằng điều này cũng hoạt động bình thường gpg, không chỉ cho gpg2:)
Markus

10

Cách tiếp cận hack:

echo -n PASSPHRASE > phrase
chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase
yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase

Vấn đề cơ bản là khóa bạn có cho USER chưa được ký. Nếu bạn tin tưởng nó, bạn có thể ký nó bằng

gpg --edit-key USER sign

Nó có thể sẽ hỏi một vài câu hỏi, tùy thuộc vào cấu hình của bạn. Làm điều này một lần, sau đó bạn nên sử dụng crontab của mình. Tôi vẫn khuyên bạn nên sử dụng giải pháp mà tôi đã đề xuất, đặt cụm mật khẩu vào một tệp riêng biệt và làm cho nó chỉ có thể đọc được bởi một người dùng mà lệnh chạy. Nếu bạn làm điều đó, bạn có thể loại bỏ yes |, và chỉ có dòng mã hóa.


1
Tôi đã thử phương pháp ký khóa, cả ký hiệu gpg2 --edit-key USER, bây giờ nó cho thấy rằng nó đã được ký, nhưng vẫn tin tưởng: không xác định. Và lô vẫn sẽ không chạy với lời nhắc
nycynik

2
Tôi nghĩ lsignsẽ là một ý tưởng tốt hơn. Nó không phải là nếu bạn lsign tức là. ký cục bộ một khóa, ký hiệu đó vẫn còn trên máy tính của bạn. Nhưng nếu bạn chỉ cần ký, điều đó được coi là công khai và do đó sẽ được gửi đến máy chủ khi bạn thực hiện --send-keys?
n611x007

2

Sử dụng lệnh này, nó sẽ giúp bạn

echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX

1

Tôi cũng đang chạy vào điều này. Tôi không thể nhận được phím đăng nhập để làm bất cứ điều gì thú vị. Đây là những gì tôi đã làm:

tạo khóa gpg:

gpg --gen-key

lấy ID khóa dài (kết quả ở cột thứ 5):

gpg --list-keys --with-colon name@domain.tld

Thêm dòng khóa đáng tin cậy vào ~ / gnupg / gpg.conf

trusted-key 16DIGITALPHANUMERICKEYID

dòng gpg trong tập lệnh sao lưu:

gpg -e -r name@domain.tld backup_file.tgz

Gỡ lỗi cron: Tôi cũng đang nắm bắt đầu ra cron dubugging bằng cách gửi stdout và stderr đến tệp nhật ký trong dòng lệnh cron. Thật hữu ích khi biết


1
Không, đừng làm vậy. Thêm một trusted-keydòng vào gpg.confsẽ khiến gpgbạn luôn tin tưởng khóa đó hoàn toàn như một trong những khóa của chính người dùng , đó là một điều tồi tệ . Truyền --trusted-keynhư một đối số và chỉ trong trường hợp cụ thể này mới được chấp nhận (cũng như truyền --trust-model=alwaystheo cách tương tự ).
Blacklight Shining

Nó là chìa khóa của tôi. Không phải đánh dấu nó là đáng tin cậy chính xác những gì tôi muốn?
jorfus,

1
Nếu đó thực sự là chìa khóa của bạn, thì có, hãy đánh dấu nó là cuối cùng đáng tin cậy (mặc dù cá nhân tôi thích làm điều đó hơn --edit-key, không phải bằng cách thêm một trusted-keydòng). Người hỏi không nói rằng đó là chìa khóa của riêng họgpg đang phàn nàn.
Blacklight Shining

1

Tôi giả định rằng giống như tôi, rất nhiều người đến đây vì phần câu hỏi 'không có bàn phím tương tác'. Với gpg2 và gpg-agent, việc ký / mã hóa / giải mã nội dung mà không có bất kỳ tương tác bàn phím nào trở nên khá phức tạp. Đây là cách bạn tạo chữ ký khi cụm mật khẩu khóa cá nhân bản rõ của bạn được lưu trong một tệp văn bản:

cat something_so_sign.xzy | gpg \
    --passphrase-file "plaintext_passphrase.txt" \
    --batch \
    --pinentry-mode loopback \
    -bsa

Thay đổi -b -s -a tùy theo nhu cầu của bạn. Các công tắc khác là bắt buộc. Bạn cũng có thể chỉ cần sử dụng --passphrase 'SECRET'. Như đã chỉ ra, hãy cẩn thận với điều đó. Tất nhiên, các tệp văn bản rõ ràng không tốt hơn nhiều.


0

Hoặc ký vào chìa khóa (tất nhiên sau khi bạn xác nhận dấu vân tay):

gpg --sign-key <recipient email address>

Sau đó bạn hoàn toàn tin tưởng vào chìa khóa.

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately

5
Tin tưởng chủ sở hữu không liên quan gì đến vấn đề này. Chỉ thiết lập sự tin tưởng sở hữu nếu bạn tin tưởng anh ta liên quan đến ký / thẩm tra các phím khác và chủ sở hữu của họ
x539

Tại sao không chỉnh sửa câu trả lời của bạn để cập nhật về độ tin cậy chính? Hiện tại có thể gây hiểu lầm ... Ngoài ra --lsign-keycó thể là một ý tưởng tốt hơn, không? thấy bình luận khác của tôi về lsign
n611x007

0

nhập mô tả hình ảnh ở đây

Khi bạn tạo một chứng chỉ lần đầu tiên với email-id của bạn, hãy chọn chứng chỉ hoàn toàn tin cậy sau đó bất cứ khi nào bạn mã hóa bất kỳ tệp nào sẽ không đặt câu hỏi như .... để biết thêm thông tin, hãy mở hình ảnh trong liên kết trên.

KHÔNG chắc chắn rằng khóa thuộc về người có tên trong ID người dùng. Nếu bạn thực sự biết mình đang làm gì, bạn có thể trả lời câu hỏi tiếp theo là có.

Vẫn sử dụng khóa này? (y / N)


0

Một cách tiếp cận khác: Để từ chối quyền truy cập vào dữ liệu nhạy cảm (thay vì mã hóa nó bằng khóa của bên thứ ba), tôi CHỈ tải lên * khóa ** CÔNG KHAI của tôi lên máy chủ mà tôi muốn bảo vệ dữ liệu và sử dụng khóa đó để mã hóa. Điều này phủ nhận sự cần thiết của một lời nhắc tương tác để cung cấp mật khẩu tạo điều kiện tự động hóa và tốt nhất là khóa RIÊNG TƯ không có trong máy chủ công cộng.

gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt

Tuy nhiên, nếu KHÔNG mã hóa bằng khóa công khai của riêng bạn, việc sử dụng công tắc --trust-model alwayssẽ hơi phức tạp. Dù sao, một cách khác để giải quyết vấn đề từ chối quyền truy cập vào dữ liệu. HTH- Terrence Houlahan

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.