उबंटू सर्वर पर एन्क्रिप्टेड svn पासवर्ड को स्टोर करने का सबसे अच्छा तरीका क्या है?


8

Hullo,

मेरे पास Ubuntu सर्वर है जो एक तोड़फोड़ सर्वर चला रहा है। मैं SSH के माध्यम से उसी मशीन पर क्लाइंट चला रहा हूं, और मुझे अपना पासवर्ड याद रखने के लिए svn क्लाइंट चाहिए, लेकिन इसे प्लेनटेक्स्ट के रूप में स्टोर करने के लिए नहीं। खोज रहे हैं यहाँ gnome-keyring और kwallet: मैं दो तरीकों से देखते हैं। जैसा कि मैं डेस्कटॉप मैनेजर का उपयोग नहीं कर रहा हूं, मैं इनमें से किसी एक का उपयोग करने की कोशिश कर रहा हूं। कोई सुझाव? क्या मेरे द्वारा बताए गए दो ऐप में से किसी एक का उपयोग करना ठीक होगा (या यहां तक ​​कि काम)?

TIA

जवाबों:


9
  1. आप रिमोट मशीन पर Gnome-keyring या Kwallet चला सकते हैं। प्रत्येक दो घटकों में आता है, एक डेमन और एक जीयूआई।

    • यदि आप X अग्रेषण के साथ ssh चलाते हैं, तो आप GUI अनुप्रयोग को दूरस्थ मशीन पर चला सकते हैं। सिर्फ इसलिए कि यह एक "सर्वर" मशीन है इसका मतलब यह नहीं है कि आप इस पर GUI एप्लिकेशन इंस्टॉल नहीं कर सकते। इससे कोई फर्क नहीं पड़ता कि आप संबंधित डेस्कटॉप वातावरण चला रहे हैं या नहीं, एप्लिकेशन को चलाने के लिए किसी विशिष्ट डेस्कटॉप वातावरण की आवश्यकता नहीं है।

    • आप Kwallet को कमांड लाइन पर के माध्यम से नियंत्रित कर सकते हैं qdbus, हालांकि यह इस विशिष्ट मामले में एक अच्छा विचार नहीं है क्योंकि आपको कमांड लाइन पर क्लीयरटेक्स्ट में अपना पासवर्ड लिखना होगा, और यह अन्य उपयोगकर्ताओं द्वारा स्नूप किया जा सकता है। इस एसयू जवाब को भी देखें ।

    • ग्नोम-कीरिंग और क्वाटलेट (पैकेज python-keyring-gnomeऔर python-keyring-kwallet) दोनों के लिए एक अजगर बंधन है ; आप उन्हें नियंत्रित करने के लिए एक छोटा अजगर स्क्रिप्ट लिख सकते हैं। वास्तव में सूक्ति-कीरिंग के लिए पहले से ही एक है: gkeyring

    • यदि आपका कीरिंग पासवर्ड आपके लॉगिन पासवर्ड के समान है, तो आप इंस्टॉल कर सकते हैं libpam-keyringऔर जब आप लॉग इन करते हैं तो आपकी कीरिंग स्वचालित रूप से अनलॉक हो जाएगी। हालांकि इसके लिए एक कुंजी जोड़ी के बजाय पासवर्ड के साथ लॉगिंग की आवश्यकता होती है।

  2. यदि आप स्थानीय स्तर पर गनोम-कीरिंग या क्वाटलेट चला रहे हैं, तो आप उन्हें थोड़े काम के साथ, ssh के माध्यम से अग्रेषित कर सकते हैं। वे यूनिक्स सॉकेट्स का उपयोग करते हैं, जो ssh आगे नहीं कर सकता है। लेकिन आप socatस्थानीय स्तर पर टीसीपी सॉकेट्स के लिए यूनिक्स सॉकेट्स को रिले कर सकते हैं और रिमोट मशीन पर दूसरे तरीके से गोल कर सकते हैं:

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    यह प्रत्येक तरफ छोटे शेल स्क्रिप्ट के साथ स्वचालित हो सकता है और एक RemoteForwardलाइन में हो सकता है ~/.ssh/config। सिद्धांत रूप में, आपको तब दूरस्थ मशीन से सूक्ति कीरिंग तक पहुंचने में सक्षम होना चाहिए। हालाँकि, मैंने इसे सीहोर से एक्सेस करने की कोशिश की, और इसने कनेक्ट करने की कोशिश भी नहीं की $GNOME_KEYRING_SOCKET; मुझे नहीं पता कि क्यों, और मुझे नहीं पता कि svn कीरिंग का उपयोग करने में सक्षम होगा या नहीं।

  3. आप एक एन्क्रिप्टेड फ़ाइल सिस्टम पर अपना svn पासवर्ड स्टोर कर सकते हैं। कई विकल्प हैं ; मुझे लगता है कि जाने का सबसे सरल तरीका है encfs। प्रारंभिक व्यवस्था:

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    सामान्य वर्कफ़्लो:

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    इस विधि में कई कारणों से मेरी प्राथमिकता है:

    • प्रारंभिक सेटअप और सामान्य वर्कफ़्लो दोनों बहुत सरल हैं।
    • इससे कोई फर्क नहीं पड़ता कि आप कहाँ से लॉग इन करते हैं, विशेष रूप से आपको एक स्थानीय एक्स सर्वर की आवश्यकता नहीं है और ssh पर X अग्रेषण का उपयोग करें।
    • एक एन्क्रिप्टेड फाइलसिस्टम एक कीरिंग की तुलना में अधिक बहुमुखी है (हालांकि यह कीरिंग उपयोग के लिए कम सुविधाजनक है, लेकिन svn मामले में यह नहीं है)।
    • एकमात्र गैर-सर्वव्यापी उपकरण जो आपको चाहिए वह है एनएफ़सीएस (जिसमें एफयूएसएस की आवश्यकता होती है), और यह उबंटू के लिए पैक किया गया है।

मुझे जवाब में उम्मीद से ज्यादा, धन्यवाद! मैं तीसरे दृष्टिकोण की कोशिश करूँगा और वापस रिपोर्ट करूँगा।
एंडी

बहुत पूरा जवाब।
.josh

क्या यह संभव है कि तोड़फोड़ करने पर जमानत दी जाए? ~ /। अन्यथा, 3 डी दृष्टिकोण थोड़ा खतरनाक है यदि आप पहले एनकॉफ़ चलाना भूल जाते हैं।
अनहैमर

@unhammer इस दृष्टिकोण के साथ, यदि एनएफ़एसएफ फाइलसिस्टम माउंट नहीं है, तो ~/.subversion/authएक झूलने वाला प्रतीकात्मक लिंक है। उस मामले में तोड़फोड़ आपको बताती है कि यह आपके पासवर्ड को स्टोर करने जा रहा है (यदि आपने उस अधिसूचना को बंद नहीं किया है) लेकिन वास्तव में इसे कहीं भी स्टोर नहीं करना है (svn 1.6.6 के साथ परीक्षण किया गया)। इसलिए तीसरे दृष्टिकोण के साथ कोई जोखिम नहीं है।
गिलेस एसओ- बुराई को रोकना '

अहा, मैंने पहली बार सिमलिंक के बिना कोशिश की थी, लेकिन अब मुझे एन्क्रिप्टेड फोल्डर के अंदर एक फोल्डर के लिए एक सिमलिंक दिखाई देता है जो काम करता है, धन्यवाद कि अप को
मंजूरी

0

gpg पासवर्ड के साथ एक फ़ाइल को एन्क्रिप्ट करता है, - लेकिन फिर आपको इसके लिए पासफ़्रेज़ की आवश्यकता होगी (और निजी कुंजी खोना नहीं है!)।

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

आपको ऐसा करने की आवश्यकता क्यों है?


मैं एन्क्रिप्ट करने के लिए एक सामान्य उद्देश्य तरीके की तलाश नहीं कर रहा हूं, लेकिन एक ऐसा तरीका जो एसवीएन के साथ अच्छी तरह से प्लग करता है। जब मैंने उबंटू डीकेस्टॉप पर एसवीएन का उपयोग किया है तो कोई समस्या नहीं हुई है, इसलिए मुझे लगता है कि यह सूक्ति-कीरिंग का उपयोग कर रहा है। मैं फिर से मानता हूँ कि Ubuntu-Server पर gnome-keyring स्थापित नहीं है, और इसीलिए यह समस्या है। वर्तमान में मैं सामान की जांच कर सकता हूं, लेकिन मुझे एक चेतावनी मिलती है कि मैं केवल अनएन्क्रिप्टेड पासवर्ड स्टोर कर सकता हूं। अधिक जानकारी के लिए मैंने जो लिंक दिया था, उसे देखें। धन्यवाद।
एंडी

मैंने ऊपर स्पष्टीकरण स्पष्ट किया है, hth।
एंडी

मैं SVN के लिए मानक netrc प्रारूप के साथ ~ / .authinfo.gpg का उपयोग करना पसंद करूंगा, और gpg को एन्क्रिप्शन को संभालना होगा, लेकिन दुर्भाग्य से ऐसा लगता है कि ऐसा लगता है कि इसे encfs समाधान की तुलना में थोड़ा अधिक सेटअप की आवश्यकता होगी। ऐसा नहीं लगता कि svn उपयोगकर्ता-परिभाषित पासवर्ड स्टोरों की मनमानी की अनुमति देता है।
अनहैमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.