SSH कुंजी पासवर्ड लागू करें?


9

मैं SSH के लिए पासवर्ड-आधारित लॉगिन को हटाने के लिए देख रहा हूँ। हालाँकि, मैं पासवर्डलेस ssh कीज़ की अनुमति नहीं देना चाहता, क्योंकि यह और भी बुरा होगा।

मैं यह कैसे सुनिश्चित कर सकता हूं कि केवल SSH कुंजी जिनके पास पासवर्ड हैं वे कनेक्ट कर सकते हैं?

यदि ऐसा नहीं किया जा सकता है, तो क्या वैकल्पिक रूप से SSH कुंजी पीढ़ी को प्रबंधित करने और उपयोगकर्ताओं को अपनी कुंजी बनाने और / या उपयोग करने से रोकने जैसे विकल्प हैं? पीकेआई जैसा कुछ, मुझे लगता है।

जवाबों:


20

निजी कुंजी पर सेट किया जा सकने वाला पासफ़्रेज़ SSH सर्वर या उसके कनेक्शन से असंबंधित है। निजी कुंजी के लिए एक पासफ़्रेज़ सेट करना एक सुरक्षा उपाय है जिसे निजी कुंजी चोरी होने की स्थिति में तीसरे पक्ष द्वारा अपने दूरस्थ शेल तक पहुंचने से रोकने के लिए मुख्य स्वामी को उपाय करना पड़ सकता है।

दुर्भाग्य से, आप उपयोगकर्ताओं को पासफ़्रेज़ के साथ अपनी निजी कुंजियाँ सुरक्षित करने के लिए बाध्य नहीं कर सकते। कभी-कभी, दूरस्थ एसएसएच सर्वर तक पहुंच को स्वचालित करने के लिए असुरक्षित निजी कुंजी की आवश्यकता होती है। एक अच्छी आदत मैं अत्यधिक की सलाह देते हैं इस तरह के मामलों के लिए करने के लिए उपयोगकर्ताओं को सलाह देने के है हैश known_hosts फ़ाइल (पर संग्रहीत ~ / .ssh / known_hosts ) है, जो उपयोगकर्ता जोड़ता करने के लिए दूरस्थ मेजबान के बारे में जानकारी रखता है, निम्न आदेश का उपयोग कर:

ssh-keygen -H -f ~/.ssh/known_hosts

इस तरह, भले ही किसी तीसरे पक्ष ने असुरक्षित निजी कुंजी तक पहुंच प्राप्त की हो, लेकिन यह पता लगाना बेहद मुश्किल होगा कि यह कुंजी किस मेजबान के लिए मान्य है। बेशक, इस तकनीक के किसी भी मूल्य के लिए शेल इतिहास को साफ़ करना अनिवार्य है।

इसके अलावा, एक और बात जो आपको हमेशा ध्यान में रखनी चाहिए, वह रूट को आपके SSH सर्वर के कॉन्फ़िगरेशन (sshd_config) में निम्नलिखित जोड़कर दूरस्थ रूप से लॉगिन करने की अनुमति नहीं देता है:

PermitRootLogin no

दूसरी ओर, यदि आप उपयोगकर्ताओं को प्रमाणीकरण के लिए कुंजियों का उपयोग करने से रोकना चाहते हैं, लेकिन पासवर्ड का उपयोग करने के बजाय, आपको अपने sshd_config में निम्न जोड़ना चाहिए :

PasswordAuthentication yes
PubkeyAuthentication no

8

यह मुमकिन नहीं है।

उपयोगकर्ता अपने कीफाइल्स के साथ कुछ भी कर सकते हैं, पासवर्डलेस में बदल सकते हैं भले ही आपने इसे उदाहरण के लिए उत्पन्न किया हो।


3

आप नहीं कर सकते। एक बार जब उपयोगकर्ता के पास महत्वपूर्ण डेटा होता है, तो आप उन्हें पासफ़्रेज़ को हटाने से रोक नहीं सकते हैं। आपको अपना प्रमाणीकरण करने के अन्य तरीकों की तलाश करनी होगी।


2

उपयोगकर्ता कुंजियों पर नियंत्रण पाने के लिए, सभी कुंजियों को मूल स्वामित्व वाली निर्देशिका में ले जाना चाहिए जहां कुंजियाँ पठनीय हैं लेकिन अंतिम उपयोगकर्ता द्वारा परिवर्तनीय नहीं हैं। यह sshd_config को अपडेट करके किया जा सकता है।

एक बार जब कुंजी फाइलें एक नियंत्रित स्थान पर होती हैं, तो आपको आवश्यक होस्ट को कुंजियों के वितरण के बाद (और पासवर्ड नीति को लागू करने) के लिए प्रबंधन इंटरफ़ेस की आवश्यकता होगी। या तो खुद को रोल करें या फ़ॉक्सट / टेक्टिया आदि जैसे उत्पादों पर एक नज़र डालें।


... जो सार्वजनिक कुंजी के लाभों को तोड़ता है
पटवारी

0

एक शमन होगा Google प्रमाणक PAM मॉड्यूल प्लगइन का उपयोग करना। आमतौर पर आधिकारिक पैकेज के भीतर उपलब्ध है।

यह आपके स्मार्टफोन पर 6-अंकीय कोड के माध्यम से 2FA उपलब्ध कराएगा।

निर्देश यहां: उबंटू में 16.04 पर एसएसएच के लिए बहु-कारक प्रमाणीकरण कैसे सेट करें


1
आपको ध्यान देना चाहिए कि यह सीधे सवाल का जवाब नहीं देता है , लेकिन एक अच्छा (अच्छा) विकल्प है।
सिवायजोज

1
@ceejayoz आप सही हैं। मैंने उत्तर के आरंभ में "एक शमन का उपयोग करना होगा .." जोड़ा, अभी यह स्पष्ट करने के लिए कि यह एक विकल्प है।
तुलसी

-1

SIMPLE, आप सिर्फ SSH प्रोटोकॉल का विस्तार करते हैं ताकि SSH क्लाइंट या SSH एजेंट रिपोर्ट करें / यह कहने के लिए एक ध्वज सेट करें कि क्या मूल निजी कुंजी एन्क्रिप्ट की गई थी या नहीं (शायद सर्वर साइड किसी क्वेरी को भी रोक सकती है) - चूंकि क्लाइंट साइड दृश्यता है निजी कुंजी और यहां तक ​​कि पास के लिए पहले से ही संकेत देता है जब कुंजी एन्क्रिप्ट किया गया है।

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