मेरे पासवर्ड को SSH कुंजी समाप्त होने के बाद या समय समाप्त होने पर सुरक्षित करें


12

मेरे पास एक निजी SSH कुंजी है जो मैं प्रमाणीकरण के लिए उपयोग करता हूं जो ~ / .ssh / id_rsa में संग्रहीत है । जब मैं एक सर्वर में ssh करता हूं, तो मुझे कुंजी अनलॉक करने के लिए पासवर्ड के लिए कहा जाता है:

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

यह मुझे पंसद है। मुझे यह भी पसंद है कि मैं बार-बार ssh कर सकता हूं और यह मुझे मेरे पासवर्ड के लिए संकेत नहीं देता है।

मुझे जो पसंद नहीं है वह यह है कि मुझे अपने प्रमुख पासवर्ड दिनों या हफ्तों बाद भी दर्ज करने की आवश्यकता नहीं है। मैं अपनी स्क्रीन को लॉक कर सकता हूं या इसे सोने के लिए रख सकता हूं और मुझे अभी भी अपना कुंजी पासवर्ड दर्ज नहीं करना है। पासवर्ड को समाप्त करने का एकमात्र समय ऐसा लगता है जब मैं लॉगआउट करता हूं (जो मैं शायद ही कभी करता हूं)।

मुझे कुछ समय के बाद समाप्त करने के लिए कुंजी पासवर्ड कैसे मिलता है, मुझे प्रमाणित करने के लिए अपना पासवर्ड फिर से दर्ज करने के लिए मजबूर करता है? इसे बनाना ताकि शायद 1 घंटे के बाद, कुंजी स्वचालित रूप से भूल जाए।

जवाबों:


4

Ssh- एजेंट को टीक करने की बजाय (जिसे अब मूर्खतापूर्ण हैकिंग की आवश्यकता होती है), मैं दृढ़ता से आपके डिफ़ॉल्ट (लॉगिन) कीचेन पर सेटिंग्स बदलने की सलाह देता हूं। मैं बहुत ही उपयोगी 'लॉक ऑन स्लीप' के साथ-साथ '4 घंटे के बाद लॉक' का उपयोग करता हूं क्योंकि मैं तब तक प्रॉमिस नहीं चाहता जब तक कि मैं वास्तव में afk नहीं हूं।

किचेन एक्सेस खोलें और सेटिंग्स बदलने के लिए लॉगिन किचेन पर राइट-क्लिक करें: किचेन सिक्योरिटी सेटिंग्स

या यदि आप एक कमांडलाइन पसंद करते हैं:

security set-keychain-settings -lu -t 14400

यह चाबी का गुच्छा अनलॉक करने के लिए कम से कम एक अतिरिक्त संकेत देगा (जो आपके लॉगिन पासवर्ड की आवश्यकता है) और साथ ही जिस कुंजी का उपयोग करने का प्रयास कर रहे हैं उसके लिए शीघ्र ... लेकिन यह सिस्टम इंटीग्रिटी प्रोटेक्शन आईएमओ को अक्षम करने के लिए धड़कता है।


यह मेरे लिए एल कैपिटन में एक विकल्प नहीं है, और कमांडलाइन कमांड को कोई फर्क नहीं पड़ता है, क्या आपको पता है कि कहीं एल कैपिटन में भी ऐसा ही विकल्प है?
इयान

1
बहुत यकीन है कि मैं एल कैप पर ऐसा करने में सक्षम था - मैंने अभी-अभी जाँच की है और दोनों तरीके (यूआई और cmdline) निश्चित रूप से अभी भी सिएरा पर काम करते हैं। मैं इसे केवल लॉगिन किचेन पर कर सकता हूं, हालांकि, सिस्टम या आईक्लाउड नहीं।
डेव ग्रेगोरी

9

नोट : OS X के नए संस्करणों में आपको इस कार्य के लिए सिस्टम इंटीग्रिटी प्रोटेक्शन को अक्षम करना होगा । (इसे इंगित करने के लिए @ ग्रेवी और @ जैप को धन्यवाद।)

एक पाठ संपादक /System/Library/LaunchAgents/com.openssh.ssh-agent.plistमें खोलें (पुराने संस्करणों org.openbsd.ssh-agent.plistमें:)। बदलने के:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

साथ में:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

यह 30 मिनट के बाद कुंजी को समाप्त कर देगा।

रीबूट। रुको, रिबूट? यह विंडोज नहीं है! हां, रिबूट।

ठीक है, आप मक्खी पर सेटिंग बदलने के लिए निर्देशों को समझने की कोशिश कर सकते हैं , लेकिन सौभाग्य।


1
मेरे जैसा एक पेडेंट "1800" को "30 मीटर" से बदल देगा क्योंकि यह पढ़ने में थोड़ा आसान बनाता है। पूर्ण प्रारूप के लिए sshd_config (8) में TIME FORMATS देखें।
टोनी विलियम्स

@Tony विलियम्स शांत! तय
माइकल क्रोपट

यह मेरे लिए योसेमाइट पर काम करता प्रतीत नहीं होता है; कोई और?
डेव ग्रेगोरी

मुझे Yosemite पर वर्कअराउंड मिला जिसमें सिस्टम इंटीग्रिटी प्रोटेक्शन को डिसेबल करना शामिल नहीं है; नीचे एक उत्तर के रूप में जोड़ा गया।
डेव ग्रेगोरी

1
@Jaap की जानकारी के लिए धन्यवाद। मैं वर्तमान में OS-X का दिन-प्रतिदिन उपयोग नहीं करता हूं, इसलिए मैं व्यक्तिगत रूप से कुछ भी सत्यापित नहीं कर सकता, लेकिन इस प्रश्नोत्तर का अच्छा प्रयास करने के लिए मैंने आपकी जानकारी के आधार पर अपना उत्तर अपडेट किया और डेव ग्रेगोरी के स्वीकृत उत्तर को बदल दिया क्योंकि सिस्टम इंटिग्रिटी प्रोटेक्शन को डिसेबल करना कई मामलों में बेवजह लगता है।
माइकल क्रॉपैट

7

आपको कुंजी का जीवन सेट करने की आवश्यकता है। यह सामान्य रूप से हमेशा के लिए चूक जाता है।

जब आप चलाते हैं ssh-addतो आप -tविकल्प का उपयोग करना चाहते हैं । यदि आप एक घंटे का प्रमुख जीवन चाहते हैं तो यह है ssh-add -t 1h। टाइम फॉर्मेट को sshd_configमैन पेज में देखा जा सकता है, लेकिन सीधे शब्दों में कहें तो एस, एम, एच, डी, या डब्ल्यू सेकंडों, मिनटों, घंटों, दिनों या हफ्तों के बाद आते हैं।

ssh-addअपनी .bashrc फ़ाइल में डाला जा सकता है और यह आपको कुंजी को एक बार सत्यापित करने के लिए कहेगा। यहां तक ​​कि जब कुंजी "समाप्त हो जाती है" इसे हटा नहीं दिया जाता है - यह सिर्फ पासफ़्रेज़ के लिए पूछता है जब इसका उपयोग करने का प्रयास किया जाता है।

अन्य विकल्प लॉन्च विकल्पों में परिवर्तन करना होगा ssh-agentजिसके लिए इसमें स्टोर किया गया है /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistऔर इसमें जोड़ें -t। (मैं LaunchControlइन्हें बदलने के लिए उपयोग करता हूं, लेकिन अगर आप सावधान हैं तो आप इसे हाथ से कर सकते हैं।)


बल्कि ssh-addमुझे sshहर बार चलाने से पहले मैन्युअल रूप से चलाने के लिए याद नहीं करना चाहिए । यह दिलचस्प है, लेकिन मैं वास्तव में कुछ स्वचालित की तलाश कर रहा हूं।
माइकल क्रोपत

+1 org.openbsd.ssh-agent.plistसमाधान की ओर इशारा करने के लिए धन्यवाद
माइकल क्रोपट

1

एक अन्य समाधान है:

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

इस समाधान के साथ, आपको अपने सभी कीचेन के लिए एक टाइमआउट का चयन करने की आवश्यकता नहीं है - जब आप अपनी निजी कुंजी पासवर्ड रिकॉर्डिंग के लिए कुछ सेकंड का टाइमआउट सेट करना चाहते हैं तो आप काफी परेशान होंगे - और आपको संपादित करने के लिए अपने SIP को अक्षम नहीं करना होगा / सिस्टम / लाइब्रेरी / LaunchAgents / org.openbsd.ssh-agent.plist।

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