gpg बिना कीबोर्ड इंटरेक्शन के एन्क्रिप्टेड फ़ाइल [बंद]


84

मैं एक फ़ाइल को एन्क्रिप्ट करने के लिए एक क्रेस्टैब के भीतर अगली कमांड चला रहा हूं और मुझे कीबोर्ड इंटरैक्शन नहीं चाहिए

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

लेकिन मेरे पास इसका जवाब है:

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) 

चूंकि --passphrase-fd केवल पहली पंक्ति पढ़ता है ... यदि आप चलाते हैं तो क्या होता है echo -e "PASSPHRASE" "\nyes" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT?
डेविड कोस्टा

आदमी पृष्ठ किसी को भी? --batchऔर --yes
u0b34a0f6ae

जवाबों:


76

जैसा कि डेविड ने बताया, यहाँ समस्या यह है कि gpg उस सार्वजनिक कुंजी पर विश्वास नहीं करता है जिसे आप एन्क्रिप्ट करने के लिए उपयोग कर रहे हैं। आप कुंजी के रूप में वह समझाया जा सकता है।

एक विकल्प - खासकर यदि कुंजी कभी-कभार बदल रही हो - तो --trust-model alwaysआपके gpg कमांड से निपटने के लिए होगा।

यहाँ आदमी पृष्ठ से प्रासंगिक सा है:

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

समझ में क्यों नहीं आता है कि सिस्टम को लगता है कि कोड है। मैंने क्लिक किया बोली; कोड नहीं। इसे संपादित करते समय केवल उद्धृत किया गया है (बिना किसी रंग के)। अजीब।
rsaw

4
ऐसा इसलिए है क्योंकि पाठ संरेखित करने के लिए रिक्त स्थान का उपयोग करता है।
टॉम फेजर

यह मेरे लिए सही उत्तर है! धन्यवाद
eigenfield

46

यहाँ मेरा समाधान है, जो gpg2 पर आधारित है (लेकिन मुझे यकीन है कि आप gpg के समान तकनीक को लागू कर सकते हैं)

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

यह कुंजी को पूरी तरह से भरोसा करने के लिए gpg2 को बताएगा, ताकि आप बिना संकेत के एन्क्रिप्ट कर सकें


1
यह ट्रस्ट-डीबी को तुरंत अपडेट करता है और कोई सेव की आवश्यकता नहीं है।
गलियों

12
यह मालिक-ट्रस्ट को कुंजी-वैधता नहीं देता है। अल्टिमेट ट्रस्ट केवल आपकी खुद की की के लिए है। यानी सब कुछ एक अंततः विश्वसनीय पहचान द्वारा हस्ताक्षरित के रूप में अपने स्वयं के द्वारा हस्ताक्षरित है। इसलिए यह जरूरी नहीं है कि अगर यह आपकी कुंजी नहीं है तो प्रमाणित न करें। समस्या की-वैधता है। इसे हल / हल करने के लिए आपको कुंजी पर हस्ताक्षर करना चाहिए। (एक स्थानीय-केवल हस्ताक्षर और फिंगरप्रिंट सत्यापन पर विचार करें)
x539

3
x539 सही है। के बाद gpg2 --edit-key <key-id>आप करते हैं lsignऔर save। मुझे लगता है कि ट्रस्ट 5 इस (गलत समझा) के लिए गलत उपयोग है, और (मेरे लिए) यह भी अप्रभावी (बेकार) था, क्योंकि यह x539 ने बताया।
n611x007

ध्यान दें कि यह सामान्य के लिए भी काम करता है gpg, न केवल gpg2:)
मार्कस

10

हैक दृष्टिकोण:

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

अंतर्निहित समस्या यह है कि आपके पास USER के लिए कुंजी हस्ताक्षरित नहीं है। यदि आपको इस पर भरोसा है, तो आप इस पर हस्ताक्षर कर सकते हैं

gpg --edit-key USER sign

यह शायद आपके विन्यास के आधार पर, कुछ प्रश्न पूछेगा। एक बार ऐसा करें, फिर आपको अपने क्रेटाब में जाने के लिए अच्छा होना चाहिए। मैं अभी भी मेरे द्वारा प्रस्तावित समाधान का उपयोग करने की सिफारिश करता हूं, पासफ़्रेज़ को एक अलग फ़ाइल में डाल देता हूं और इसे केवल उसी उपयोगकर्ता द्वारा पठनीय बनाया जाता है जो इसे कमांड करता है। यदि आप ऐसा करते हैं, तो आप को मार सकते हैं yes |, और बस एन्क्रिप्ट लाइन है।


1
मैंने साइन कुंजी विधि की कोशिश की, दोनों gpg2 --edit-key USER साइन, अब यह दिखाता है कि यह हस्ताक्षरित है, लेकिन अभी भी भरोसा है - अज्ञात। और बैच अभी भी w / o प्रॉम्प्टिंग नहीं चलेगा
nycynik

2
मुझे लगता है lsignकि एक बेहतर विचार होगा। क्या ऐसा नहीं है कि यदि आप lsign यानी। स्थानीय रूप से एक कुंजी पर हस्ताक्षर करते हैं, यह संकेत आपके कंप्यूटर पर रहता है। लेकिन अगर आप बस हस्ताक्षर करते हैं, तो वह सार्वजनिक माना जाता है, और इस तरह से जब आप एक करते हैं तो क्या वह चाबियों पर भेजा जाएगा --send-keys?
n611x007

2

इस कमांड का उपयोग करें, यह आपकी मदद करेगा

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

1

मैं इसमें भी भाग रहा था। मुझे कुछ भी दिलचस्प करने के लिए साइन-की नहीं मिली। यहाँ मैंने क्या किया है:

एक gpg कुंजी बनाएँ:

gpg --gen-key

लंबी कुंजी आईडी प्राप्त करें (परिणाम 5 वें कॉलम में है):

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

~ / Gnupg / gpg.conf पर विश्वसनीय मुख्य पंक्ति जोड़ें

trusted-key 16DIGITALPHANUMERICKEYID

बैकअप स्क्रिप्ट में gpg लाइन:

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

क्रैबिंग डीबगिंग: मैं cd कमांड लाइन में लॉग फाइल में stdout और stderr भेजकर क्रोन डबगिंग आउटपुट कैप्चर कर रहा हूं। यह जानना उपयोगी है


1
नहीं, ऐसा मत करो। एक trusted-keyलाइन जोड़ने से हमेशा उस कुंजी को पूरी तरह से उपयोगकर्ता की अपनी कुंजियों में से एक के रूप में भरोसा किया जा gpg.confसकता gpgहै , जो एक बुरी बात है । एक तर्क के रूप में पारित करना , और केवल इस विशिष्ट मामले में स्वीकार्य है (जैसा कि उसी तरह से गुजर रहा है )। --trusted-key--trust-model=always
ब्लैकलाइट शाइनिंग

यह मेरी कुंजी है। क्या मैं जैसा चाहता हूं, वैसा उस पर भरोसा नहीं है?
जॉर्फ

1
यदि यह वास्तव में आपकी कुंजी है, तो हां, इसे अंततः विश्वसनीय के रूप में चिह्नित करें (हालांकि मैं व्यक्तिगत रूप से ऐसा करना पसंद करता हूं --edit-key, एक trusted-keyपंक्ति जोड़कर नहीं )। पूछने वाले ने यह नहीं कहा कि यह उनकी अपनी कुंजी gpgथी जिसके बारे में शिकायत थी।
ब्लैकलाइट शाइनिंग

1

मुझे लगता है कि मेरी तरह, बहुत सारे लोग प्रश्न के 'कीबोर्ड इंटरेक्शन के बिना' के लिए यहां आते हैं। Gpg2 और gpg- एजेंट के साथ यह बिना किसी कीबोर्ड इंटरेक्शन के सामान पर हस्ताक्षर / एन्क्रिप्ट / डिक्रिप्ट करने के लिए काफी जटिल हो गया। यहां बताया गया है कि जब आप अपने सादे निजी कुंजी पासफ़्रेज़ को टेक्स्ट फ़ाइल में सहेजते हैं तो आप एक हस्ताक्षर कैसे बनाते हैं:

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

अपनी जरूरतों के आधार पर -b -s -a बदलें। अन्य स्विच अनिवार्य हैं। आप भी सिर्फ उपयोग कर सकते हैं --passphrase 'SECRET'। जैसा कि पहले ही बताया गया है, उससे सावधान रहें। प्लेनटेक्स्ट टेक्स्टफाइल्स बेशक ज्यादा बेहतर नहीं हैं।


0

या कुंजी पर हस्ताक्षर करें (आपके द्वारा अंगुली की छाप के बाद, निश्चित रूप से):

gpg --sign-key <recipient email address>

उसके बाद आप पूरी तरह से कुंजी पर भरोसा करते हैं।

  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
मालिक पर भरोसा करना इस समस्या से कोई लेना-देना नहीं है। यदि आप अन्य कुंजियों और उनके स्वामियों के हस्ताक्षर / सत्यापन के संबंध में केवल उस पर भरोसा करते हैं, तो उसके स्वामी को सेट करें
x539

Ianes मुख्य विश्वास के बारे में अपडेट करने के लिए आपके उत्तर को संपादित क्यों नहीं किया गया? वर्तमान में भ्रामक हो सकता है ... यह --lsign-keyभी एक बेहतर विचार हो सकता है, नहीं? lsign के बारे में मेरी अन्य टिप्पणी देखें
n611x007

0

यहां छवि विवरण दर्ज करें

जब आप पहली बार अपने ईमेल-आईडी के साथ एक प्रमाण पत्र बनाते हैं तो पूरी तरह से विश्वसनीय प्रमाण पत्र का चयन करें तब जब भी आप किसी भी फ़ाइल को एन्क्रिप्ट करते हैं, तो सवाल नहीं पूछेगा जैसे .... अधिक जानकारी के लिए उपरोक्त लिंक में खुली छवि।

यह निश्चित नहीं है कि कुंजी उपयोगकर्ता आईडी में नामित व्यक्ति की है। यदि आप वास्तव में जानते हैं कि आप क्या कर रहे हैं, तो आप अगले प्रश्न का उत्तर हां के साथ दे सकते हैं।

इस कुंजी का उपयोग करें? (Y n)


0

एक अलग दृष्टिकोण: संवेदनशील डेटा तक पहुंच को अस्वीकार करने के लिए (तीसरे पक्ष की कुंजियों का उपयोग करके इसे एन्क्रिप्ट करने के बजाय), मैं सर्वर पर केवल * मेरी ** सार्वजनिक कुंजी अपलोड करता हूं जिसे मैं डेटा की सुरक्षा करना चाहता हूं और इसके साथ एन्क्रिप्ट करने के लिए उस कुंजी का उपयोग करता हूं। यह ऑटोमेशन की सुविधा प्रदान करने वाले पासवर्ड की आपूर्ति के लिए एक इंटरैक्टिव प्रॉम्प्ट की आवश्यकता को नकारता है और सभी के लिए, निजी कुंजी सार्वजनिक सर्वर से अलग है।

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

हालाँकि, यदि आपकी स्वयं की सार्वजनिक कुंजी के साथ एन्क्रिप्ट नहीं है , तो स्विच --trust-model alwaysका उपयोग थोड़ा रोपे है। वैसे भी, डेटा तक पहुंच से इनकार करने की समस्या को हल करने का एक अलग तरीका है। HTH- टेरेंस हुलहैन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.