दुरुस्ती: OpenVPN मानक इनपुटवरून Auth वापरकर्तानाव वाचू शकले नाही
OpenVPN ची «could not read Auth username from stdin» त्रुटी स्थानिक इनपुट अपयश आहे. सेवेला वाचनीय क्रेडेन्शियल स्रोत द्या; script-security शी याचा संबंध नाही.
could not read Auth username from stdin प्रमाणीकरणाची समस्या वाटते आणि ती नाही। OpenVPN ने मानक इनपुटवरून वापरकर्तानाव मागण्याचा प्रयत्न केला, वाचनीय काहीही सापडले नाही आणि सर्व्हरशी संपर्क साधण्यापूर्वीच थांबले। खाते पूर्णपणे वैध असू शकते; प्रक्रियेकडे विचारण्यासाठी कोणीही नाही।
म्हणून पहिले उपयुक्त पाऊल म्हणजे क्लायंट काय वाचत आहे याची खात्री करणे, कनेक्शन पुन्हा प्रयत्न करणे किंवा सर्व्हर-बाजूच्या सेटिंग्ज बदलणे नाही। खालील तपासण्या क्रमाने करा आणि पहिल्या अपयशी ठिकाणी थांबा।
त्रुटी स्थानिक इनपुट अपयश म्हणून वाचा
जेव्हा auth-user-pass फाइल आर्ग्युमेंटशिवाय येते, तेव्हा क्लायंट विचारण्याची अपेक्षा करतो। इंटरॅक्टिव्ह शेलमध्ये ती विचारणी कार्य करते कारण प्रक्रियेकडे टर्मिनल असते। systemd, cron कार्य किंवा कंटेनरच्या खाली मानक इनपुट सहसा रिकामे असते आणि वाचन तुम्ही पाहत असलेल्या त्रुटीसह त्वरित परत येते।
संदेश अपयशी झालेले क्षेत्रही सांगतो, वापरकर्तानाव किंवा पासवर्ड, ज्यावरून वाचन किती पुढे गेले हे कळते। वापरकर्तानाव नसणे म्हणजे प्रक्रिया काहीच वाचू शकली नाही। यशस्वी वापरकर्तानावानंतर पासवर्ड नसणे म्हणजे दोन्ही वाचनांमध्ये इनपुट प्रवाह संपला, जे अर्धवट लिहिलेल्या फाइलसाठी किंवा बंद पाइपसाठी सामान्य आहे।
दुसरे काही बदलण्यापूर्वी क्लायंटचे स्वतःचे दृश्य पुष्टी करा। तोच कॉन्फिगरेशन आणि तोच वापरकर्ता वापरून त्याला फोरग्राउंडमध्ये चालवा आणि विचारणी येते का ते पाहा। तुमच्या शेलमध्ये आली पण सेवा व्यवस्थापकाखाली आली नाही, तर फरक इनपुट स्रोतात आहे, क्रेडेन्शियलमध्ये नाही। unit फाइल आणि तुमच्या शेल वातावरणाची झटपट तुलना सहसा कोण टर्मिनल देतो हे दाखवते।
सेवेला समर्थित क्रेडेन्शियल स्रोत द्या
देखरेखीशिवाय चालवण्यासाठीचा समर्थित स्रोत म्हणजे आर्ग्युमेंट म्हणून दिला जाणारा क्रेडेन्शियल फाइल: auth-user-pass। फाइल साधा मजकूर म्हणून वाचली जाते: पहिली ओळ वापरकर्तानाव, दुसरी पासवर्ड। तिला पूर्ण मार्गाने दर्शवा, उदाहरणार्थ /etc/openvpn/client/creds , जेणेकरून सेवा खात्याची कार्यरत डिरेक्टरी निर्देशाचा अर्थ बदलू शकणार नाही।
परवानग्या मार्गाइतक्याच महत्त्वाच्या आहेत। फाइल क्लायंट चालवणाऱ्या खात्यासाठी वाचनीय असावी आणि इतर सर्वांसाठी नाही, आणि ती सेवा खात्याच्या किंवा सेवा समाविष्ट असलेल्या गटासह root च्या मालकीची असावी। सामग्री न छापता त्या खात्याप्रमाणे वाचनीयता तपासा।
सापेक्ष मार्ग हा शांत अपयशाचा प्रकार आहे। प्रोफाइल एका डिरेक्टरीत असू शकते तर systemd प्रक्रिया दुसरीकडे सुरू करू शकते, त्यामुळे तुमच्या शेलमध्ये सुटणारी फाइल सेवेसाठी सुटत नाही। क्रेडेन्शियल स्थिर जागी हलवा आणि त्यांना पूर्णपणे संदर्भित करा। नंतर सेवा एकदा सुरू करा आणि प्रोफाइल संपादकाच्या दृश्यावर विश्वास ठेवण्याऐवजी तोच मार्ग वापरला जातो याची खात्री करा।
जर तैनातीसाठी एकवेळचा कोड किंवा दुसरे इंटरॅक्टिव्ह आव्हान आवश्यक असेल, तर क्लायंटचा कार्यप्रवाह ते देखरेखीशिवाय खरोखर समर्थतो का हे ठरवा। स्थिर पासवर्ड असलेली फाइल फिरत्या कोडला उत्तर देऊ शकत नाही, आणि उत्तर न देऊ शकणारी विचारणी पुन्हा प्रयत्न केल्याने माहिती वाढत नाही।
script-security मदत का करणार नाही
script-security क्लायंट स्क्रिप्ट चालवू शकतो का आणि त्यांना किती देऊ शकतो हे नियंत्रित करते, त्यात पर्यावरण चलाद्वारे स्क्रिप्टला पासवर्ड देता येतो का हेही समाविष्ट आहे। वापरकर्तानाव आणि पासवर्ड मूळतः कुठून येतात याबद्दल ते काहीही सांगत नाही।
संदेशात Auth चा उल्लेख असल्याने ते उच्च स्तरावर नेणे ही सामान्य प्रतिक्रिया आहे, पण ते इनपुट स्रोताऐवजी स्क्रिप्ट परवानग्या बदलते आणि क्लायंट काय चालवू शकतो त्याचा विस्तार करते। सहाय्यक स्क्रिप्ट रचनेचा भाग असल्यास प्रथम इनपुट स्रोत दुरुस्त करा आणि सुरक्षा स्तर तैनातीस आवश्यक त्या किमान मूल्यावर ठेवा।
व्यवस्थापन इंटरफेस हा वैध पर्याय आहे। फ्रंटएंड त्याला जोडू शकतो, क्रेडेन्शियल विनंती घेऊ शकतो आणि वापरकर्तानाव व पासवर्डने उत्तर देऊ शकतो; काही GUI अशा प्रकारे कार्य करतात। तुम्ही तो वापरत असल्यास स्थानिक पत्त्याला बांधा, व्यवस्थापन पासवर्ड फाइलने संरक्षित करा आणि कोण जोडू शकतो हे मर्यादित करा, कारण तो क्लायंटचा नियंत्रण चॅनेल आहे।
क्लायंटने फाइल वाचल्यानंतर पुढील टप्पा पडताळा
क्लायंट क्रेडेन्शियल वाचू शकला की पुढील अपयश हे सर्व्हरशी खरे देवाणघेवाण आहे, आणि त्याच्या संदेशाचा अर्थ वेगळा आहे। त्या टप्प्यातील प्रमाणीकरण अपयश म्हणजे सर्व्हरने खाते नाकारले; आव्हान प्रतिसाद म्हणजे सर्व्हरला दुसरा घटक हवा आहे। त्यांना त्याच समस्येची पुनरावृत्ती न मानता नवीन समस्या माना।
सेवा ज्या पद्धतीने चालवेल त्याच पद्धतीने संपूर्ण मार्ग तपासा: तेच खाते, तीच कार्यरत डिरेक्टरी, तेच unit वातावरण। तुमच्या शेलमधून सुरू केल्यावरच कार्य करणारे कनेक्शन हे पर्यावरण चल किंवा टर्मिनल अजूनही प्रवाहाचा भाग असल्याचे लक्षण आहे।
नंतर रहस्ये जिथे असावीत तिथे ठेवा। कमांड-लाइन आर्ग्युमेंटमधील पासवर्ड प्रक्रिया तक्त्यात दिसतात, आणि डीबग आउटपुटमधील पासवर्ड तिकिटांमध्ये जातात। संरक्षित फाइल किंवा व्यवस्थापन इंटरफेस वापरा, क्रेडेन्शियलची पुनरावृत्ती न होणाऱ्या स्तरावर लॉग ठेवा, आणि प्रवेश असलेला कोणीही गेल्यास फाइल बदला।
तपासणी सूची: पूर्ण क्रेडेन्शियल मार्ग, सेवा खाते म्हणून वाचनीय, टर्मिनल आवश्यक नाही, script-security त्याच्या किमानेवर, व्यवस्थापन इंटरफेस फक्त बांधलेले आणि प्रमाणित असल्यास, आणि त्यातून मिळणारा सर्व्हर प्रतिसाद स्वतंत्र घटना म्हणून हाताळणे।