gpg पाइपों का उपयोग करके सममित एन्क्रिप्शन


4

मैं डेटा को खींचकर अपने ड्राइव को लॉक करने के लिए (डीएम-क्रिप्ट के साथ एलयूकेएस का उपयोग करके) कुंजी उत्पन्न करने की कोशिश कर रहा हूं /dev/random और फिर GPG का उपयोग करके एन्क्रिप्ट करना।

मेरे द्वारा उपयोग किए जा रहे गाइड में, यह निम्नलिखित कमांड का उपयोग करने का सुझाव देता है:

dd if=/dev/random count=1 | gpg --symmetric -a >./[drive]_key.gpg

यदि आप इसे एक पाइप के बिना करते हैं, और इसे एक फाइल खिलाते हैं, तो यह एक पासवर्ड में टाइप करने के लिए एक (एन?) शाप देता है। हालाँकि, जब मैं डेटा में पाइप करता हूं, तो यह निम्न संदेश को चार बार दोहराता है और वहां जमे हुए बैठता है:

pinentry-curses: no LC_CTYPE known assuming UTF-8

यह भी कहता है can't connect to '/root/.gnupg/S.gpg-agent': File or directory doesn't exist, हालांकि मैं यह मान रहा हूं कि इसका इससे कोई लेना-देना नहीं है, क्योंकि यह तब भी दिखाया जाता है जब इनपुट किसी फाइल से होता है।

इसलिए मुझे लगता है कि मेरा प्रश्न इस पर उबलता है: क्या कमांड लाइन से पासफ़्रेज़ को स्वीकार करने के लिए gpg को बाध्य करने का एक तरीका है, या किसी अन्य तरीके से इसे काम करने के लिए मिलता है, या क्या मुझे डेटा लिखना होगा /dev/random एक अस्थायी फ़ाइल के लिए, और फिर उस फ़ाइल को एन्क्रिप्ट करें? (जो मुझे पता है कि इस तथ्य के कारण ठीक होना चाहिए कि मैं लाइवसीडी पर ऐसा कर रहा हूं और अभी तक स्वैप नहीं बनाया है, इसलिए इसे डिस्क पर लिखे जाने का कोई तरीका नहीं होना चाहिए।)


GPG के --no-use-agent एक एजेंट प्रोग्राम का उपयोग न करने के लिए gpg को बताना चाहिए, और टर्मिनल में टाइप किए गए पासफ़्रेज़ को स्वीकार करना चाहिए ... कम से कम gpg 1.x में, वह संस्करण अभी भी वर्तमान Ubuntu और amp में उपयोग किया गया लगता है; मिंट रिलीज
Xen2050

जवाबों:


10

सुनिश्चित करें कि आप tty के मालिक हैं:

# ls -l $(tty)
crw--w----. 1 foo tty 136, 0 Mar  1 16:53 /dev/pts/0
# chown root $(tty)

GPG_TTY सेट करें:

# export GPG_TTY=$(tty)

gpg / pinentry इन चरणों के बाद काम करना चाहिए।


आपका बहुत बहुत धन्यवाद! इससे मुझे मैन्युअल रूप से gpg करने में पाइप की मदद मिली, और मैंने एक मुद्दा भी तय किया जिसमें मैं कीबेस कमांड लाइन क्लाइंट के साथ था जो पर्दे के पीछे gpg करने के लिए पाइप करता था।
ajk

3

खैर ... अंत में, मैंने बस एक फ़ाइल को लिखने का फैसला किया, और फिर उस फ़ाइल को एन्क्रिप्ट किया, यह मानते हुए कि चूंकि कोई स्वैप नहीं था, और फाइल सिस्टम राम में था, कि यह अगले बंद के साथ मर जाएगा।

हालाँकि, जो कोई भी इस प्रश्न को पाता है (और मेरे दिमाग में इस विचार को पुष्ट करने के लिए), मैं एक ऐसी प्रक्रिया लिखूंगा, जिसे मैंने पाया कि लंबे समय तक काम करने के बाद मुझे पता चलेगा कि इनट्रामाफ़्स बनाते समय।

पासवर्ड प्रविष्टि के लिए बाहरी पिनेंट्री प्रोग्राम का उपयोग शुरू करने से पहले आपको जो करने की आवश्यकता है वह gpg के एक संस्करण पर वापस जाना होगा। जहाँ तक मुझे पता है, कि संस्करण 2 के साथ हुआ है। यह मानते हुए कि आपके पास वर्तमान में काम कर रहे लिनक्स इंस्टाल है, आप gpg & lt; 2.0 का एक स्टेटिक रूप से संकलित संस्करण प्राप्त करना चाहेंगे।

यह गेंटू के साथ करना बेहद आसान है, केवल निम्नलिखित आदेश की आवश्यकता है:

USE="static" emerge -a1 "<gnupg-2"

बस उपयोग करना सुनिश्चित करें ldd यह पुष्टि करने के लिए कि वे वास्तव में स्थिर हैं, इससे पहले कि आप उन्हें अपने अंगूठे की ड्राइव पर कॉपी करें ताकि आप इंस्टॉल के दौरान उनका उपयोग कर सकें।

अन्य वितरणों पर, मेरा सुझाव है कि आप अपने पैकेज प्रबंधक को देखो @, और यदि वह काम नहीं करता है, तो मैं स्रोतों को डाउनलोड करने और उनके साथ संकलन करने का प्रयास करूंगा।

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