क्या कोई तकनीकी कारण है कि ssh- एजेंट में एक sudo जैसी निष्क्रियता / निष्क्रिय समय समाप्ति विशेषता का अभाव है?


9

ssh-agent -t[1] पर मौजूदा फीचर के बारे में कुछ संक्षिप्त चर्चाएं हैं , और डेबिन-डेवेल [२] पर २००१ तक एक पोस्ट थी जो निष्क्रियता के समय की विशेषता के लिए काम कर रही थी। पेजेंट के लिए SE [3] पर इसी तरह की चर्चा है।

मुझे आश्चर्य है कि बाकी ग्रह किस तरह से ssh कीज़ की रक्षा कर रहे हैं - क्या मैं इस बात के लिए कुछ स्पष्ट याद कर रहा हूँ कि मेरे लिए ऐसा दर्द बिंदु है, और जाहिर है कोई और नहीं? विशेष रूप से मैं स्क्रिप्टेड ssh इंटरैक्शन के बारे में सोच रहा हूं, जैसे कि ansible के साथ। ऐसा लगता है कि आज, आपकी पसंद हैं:

  • एजेंट में अपनी कुंजी के जीवनकाल को समय की एक लंबी अवधि के लिए निर्धारित करें, जैसे। 1h या आपकी स्क्रिप्ट्स का अधिकतम चलने का समय जो भी हो सकता है (मुझे संदेह है कि बहुत से लोग अपने sudo री-ऑउटटाइम टाइमआउट को लंबा खींचने की अनुमति देते हैं!) - लेकिन seahorse/ gnome-keyring-daemonमुश्किल से यह भी समर्थन करते हैं [4]
  • अपनी लंबी चलने वाली स्क्रिप्ट्स को सुरक्षित रखें और हर 5/10/15 मिनट में अपना पासफ़्रेज़ पुनः दर्ज करें: अब आप आसानी से अपने पासफ़्रेज़ में दिन में 20 बार प्रवेश करते हुए देखे जा सकते हैं
  • इस गुम सुविधा की नकल करने के लिए अपना खुद का होम-ब्रुश समाधान हैक करें, शायद आपके शेल के TMOUTशेल संस्करण के साथ संयोजन में (उस सुझाव के लिए freenode #openssh IRC पर धन्यवाद लोग)
  • एक प्रमुख जीवन भर सेट न करें, अर्थात आपका एजेंट आपकी कुंजी को हमेशा के लिए लोड करता है या जब तक आप मार / रिबूट नहीं करते

यदि आप संक्षिप्त ssh एजेंट टाइमआउट, मजबूत पासफ़्रेज़ और प्रत्येक प्रकार की भूमिका के लिए अलग-अलग कीफ़ाइल्स का उपयोग कर रहे हैं जिसे आप इस रूप में प्रमाणित करते हैं: यह बहुत निराशाजनक दिन होता है!

मैंने gpgkey2ssh और smartcards के साथ प्रयोग किया है, लेकिन यह वास्तव में इस विशेष समस्या को हल नहीं करता है: मैं अभी भी ssh- एजेंट कार्यक्षमता चाहता हूं और मैं नहीं चाहता कि हर 5 मिनट में फिर से मेरे निजी कुंजी को उजागर होने से रोका जाए। स्मृति में जबकि मेरा कंप्यूटर निष्क्रिय है।

क्या मैं गलत कर रहा हूँ?

[१] एसएसएच एजेंट के लिए डिफ़ॉल्ट टाइमआउट कॉन्फ़िगर करना

[२] https://lists.debian.org/debian-devel/2001/09/msg00851.html

[३] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity

[४] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129551


1
उत्तर नहीं, लेकिन, हाँ, सत्र निष्क्रियता का पता लगाने के तरीके के आसपास कुछ तकनीकी चुनौतियां हैं जब ssh-agentयह किस प्रकार के सत्र के लिए अज्ञेय है (उदाहरणार्थ सत्र, X11 सत्र, या कुछ और)। एक बात मैं यह कहना चाहूंगा कि यदि आपकी स्वचालित स्क्रिप्ट संभवत: आपके एजेंट में लोड की गई कुंजी के आधार पर नहीं होनी चाहिए। उनके पास संभवतः प्रत्येक की अपनी निजी कुंजी होनी चाहिए, जो कि केवल विशिष्ट दूरस्थ कमांड को चलाने के लिए उपयुक्त सर्वर पर मजबूर कमांड के माध्यम से अधिकृत होती है जिसे प्रत्येक स्क्रिप्ट को चलाने की आवश्यकता होती है। यह निश्चित रूप से आप उन लोगों को क्रोन आदि से चलाने देंगे ...
सेलाडा

मुझे यह ssh-agentजानने की उम्मीद नहीं है कि एक सत्र कब निष्क्रिय है, लेकिन कम से कम समय से शुरुआत करें जब भी अंतिम हस्ताक्षर ऑपरेशन हुआ, न कि जब भी ssh-agentलॉन्च किया गया था। इसके अलावा, मैं पहले से ही प्रत्येक स्क्रिप्ट भूमिका के लिए अलग-अलग उपयोगकर्ता खाते और कीफाइल्स का उपयोग करता हूं, sudoers केवल 1 या 2 कमांड को sudo'd होने की अनुमति देता है यदि आवश्यक हो, और मैंने lshellचीजों को आगे लॉक करने के लिए देखा है । लेकिन यह सब अभी भी मुझे मेरे कीफाइल्स की रक्षा करने की आवश्यकता से अनुपस्थित नहीं करता है: सिर्फ इसलिए sudo zfs sendकि किसी दिए गए कुंजी के लिए केवल कमांड की अनुमति है, जो भी उस कुंजी को उत्पन्न करता है , उसके लिए एक बहुत शक्तिशाली कमांड है!
csirac2

एक और समाधान: अपनी स्क्रिप्ट के लिए ControlMaster/ ControlPath/ ControlPersistविकल्प (देखें man ssh_config) का उपयोग करें । कम से कम अगर इसका केवल एक मेजबान से जुड़ाव हो।
derobert

यह एक दिलचस्प सुझाव है और इसने मुझे कुछ सिखाया (धन्यवाद!), लेकिन कुछ भी हल करने के लिए प्रतीत नहीं होता है अगर मैं अभी भी ssh-agentअपनी चाबियाँ लोड करने जा रहा हूं, जब तक कि मैं रिबूट नहीं करता (जो सप्ताह हो सकता है)।
सीएससीआर 2

जवाबों:


2

यदि यह आपको चिंतित करता है तो आप स्क्रीन को लॉक होने xscreensaver-command -watchपर चलाने के लिए इंटरफ़ेस का उपयोग आसानी से कर सकते हैं ssh-add -D। बहुत सरल उदाहरण के लिए मैन पेज देखें।

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