अपने ऐप के अंदर SSH परमिशन एरर्स को हल करना
नए SSH उपयोगकर्ता अक्सर एक समस्या का सामना करते हैं। उन्हें यह एरर दिखाई देता है:
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.
इसका समाधान एक सरल टर्मिनल कमांड है: chmod 600 id_rsa.pem। इंजीनियरों के लिए यह आसान है। लेकिन एजेंसी स्टाफ या IT ऑपरेटरों के लिए जो टर्मिनल का उपयोग नहीं करते हैं, यह एक बड़ी बाधा है। इससे लगातार सपोर्ट टिकट आते रहते हैं।
हमने इसे अपने ऐप के अंदर ही हल करने का निर्णय लिया। हमने परमिशन को स्वचालित रूप से पहचानने (diagnose) और ठीक करने के लिए एक सिस्टम बनाया है।
समस्या
यदि परमिशन बहुत ढीली (loose) हैं, तो OpenSSH प्राइवेट की (private key) को लोड करने से मना कर देता है। यदि अन्य लोग आपकी की (key) को पढ़ सकते हैं, तो आपकी सुरक्षा खत्म हो जाती है। अधिकांश कीज़ डिफ़ॉल्ट रूप से 0644 पर होती हैं, जो दुनिया के लिए पठनीय (world-readable) होती हैं। OpenSSH के लिए 0600 की आवश्यकता होती है।
हमारा समाधान
हम इसे संभालने के लिए दो-चरणीय (two-phase) दृष्टिकोण का उपयोग करते हैं।
चरण 1: विफलता के बाद रिकवरी (Post-failure recovery)
यदि परमिशन के कारण कनेक्शन विफल हो जाता है, तो UI में 'Fix and retry' बटन दिखाई देता है। इस पर क्लिक करने से सुधार (fix) चलता है और कनेक्शन फिर से प्रयास (retry) किया जाता है।
चरण 2: कनेक्शन से पहले रोकथाम (Pre-connection prevention)
उपयोगकर्ता के 'connect' पर क्लिक करने से पहले ऐप की (key) पाथ की जांच करता है। यदि परमिशन गलत हैं, तो हम एक चेतावनी दिखाते हैं। उपयोगकर्ता इसे ठीक करने या वैसे ही कनेक्ट करने का विकल्प चुन सकता है।
हम Windows को भी अलग तरह से संभालते हैं। Windows, Unix परमिशन के बजाय ACLs का उपयोग करता है। हमारा कोड प्लेटफॉर्म का पता लगाता है और एक्सेस ठीक करने के लिए icacls जैसे सही कमांड चलाता है।
हम चुपचाप ऑटो-फिक्स क्यों नहीं करते हैं
हमने स्टार्टअप पर स्वचालित रूप से कीज़ को ठीक करने पर विचार किया था। हमने इस विचार को खारिज कर दिया। कुछ वर्कफ़्लो में साझा कीज़ (shared keys) के लिए विशिष्ट परमिशन की आवश्यकता होती है। यदि हम बिना पूछे उन्हें बदलते हैं, तो हम उपयोगकर्ता के वर्कफ़्लो को बाधित कर देते हैं।
हमारा नियम सरल है: हम सब कुछ पहचानते (diagnose) हैं, लेकिन हम फ़ाइलों को तभी संशोधित करते हैं जब उपयोगकर्ता बटन पर क्लिक करता है।
परिणाम
ऐसा UX बनाना जो तकनीकी बाधाओं को संभाल ले, सपोर्ट वॉल्यूम को कम करता है। हम उपयोगकर्ता को दिखाते हैं कि क्या गलत है और एक-क्लिक समाधान प्रदान करते हैं। यह टर्मिनल का उपयोग करने की मनोवैज्ञानिक बाधा को दूर करता है।