मैं SSH की स्थापना कैसे करूं, इसलिए मुझे कोई पासवर्ड टाइप नहीं करना है, और बिना सार्वजनिक कुंजी का उपयोग किए?


8

मैं जानता हूं कि यहां दर्जनों सवाल हैं हर बार अपना पासवर्ड टाइप किए बिना SSH सर्वर से कैसे जुड़ें , और जवाब हमेशा "एक सार्वजनिक कुंजी का उपयोग करें।" खैर, मैं खुद को उस दुर्लभ परिस्थिति में पाता हूँ जहाँ वास्तव में कोई विकल्प नहीं है। कुछ अकथनीय कारण के लिए, मैं जिस सर्वर से जुड़ने की कोशिश कर रहा हूं, उस पर ओपनएसएसएच डेमॉन को कॉन्फ़िगर किया गया है

RSAAuthentication no
PubkeyAuthentication no

में /etc/ssh/sshd_config। मेरे पास सर्वर पर कोई प्रशासनिक पहुँच नहीं है इसलिए मैं इन्हें या किसी अन्य सर्वर कॉन्फ़िगरेशन विकल्प को नहीं बदल सकता। (मैं, निश्चित रूप से, क्लाइंट कॉन्फ़िगरेशन पर पूर्ण नियंत्रण रखता हूं: लिनक्स पर ओपनएसएसएच 5.8।)

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

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

#ChallengeResponseAuthentication yes

#KerberosAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

#UsePAM no

और यहाँ एक डिबग है ( -vv ) ट्रेस:

debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information

debug1: Unspecified GSS failure.  Minor code may provide more information

debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password

क्या सर्वर एक है /etc/krb5.keytab? GSSAPI (Kerberos) क्लाइंट-साइड सेट करने के लिए सरल हो सकता है; मुझे सर्वर के होस्टनाम के लिए पूछना होगा, हालाँकि। (इसके अलावा: keyboard-interactive के समान है password, केवल एक "पासवर्ड:" प्रॉम्प्ट तक सीमित नहीं है।
grawity

@ ग्रेविटी नं /etc/krb5.keytab, लेकिन यह है /etc/krb5/krb5.keytab। मेरे पास सामग्री तक पहुंच नहीं है। सर्वर का नाम है sftp.pass.psu.edu (मुझे नहीं लगता कि इस नाम को देने में कोई बुराई है) यदि यह प्रक्रिया को समझाने में आपकी मदद करता है।
David Z

आह, पुराने पीएसयू पासडिस्क। ऐसी सुखद यादें। मैं पासवर्ड ऑर्ट के साथ काफी खुश था। आपने कैंपस कंप्यूटिंग लोक (सीएसी जब मैं वहां गया था) से 'नेट' तक पहुंचने के बजाय क्यों नहीं पूछा? मेरा मतलब है, चलो, उनके पास एक डेबियन दर्पण है। वे सभी केवल विंडोज के प्रशंसक नहीं हैं।
Broam

@Broam मैं सोच भी नहीं सकता कि मैं पूछने वाला पहला व्यक्ति हूँ, इसलिए संभवतः उनके पास इसे इस तरह से रखने का कोई कारण है ... मुझे लगता है कि यह कोशिश करने के लिए दुख नहीं होगा, हालाँकि।
David Z

जवाबों:


3

इस मामले में, एक अपेक्षित स्क्रिप्ट लिखना (या बेहतर रिकॉर्डिंग) आपके विकल्पों में से एक होगा।

प्रत्येक प्रणाली भिन्न होती है इसलिए कोई स्क्रिप्ट नहीं होगी, लेकिन ऑटोपेक्ट के साथ इस उद्देश्य के लिए स्क्रिप्ट रिकॉर्ड करना बहुत आसान है।


जघन्य रूप से असुरक्षित है, लेकिन सबसे सरल और सबसे सीधा जवाब होने के लिए एक उत्थान है।
Zac B

अच्छी बात। यह बेहतर है कि इन सभी को एक फ़ायरवॉल के पीछे और एक निजी नेटवर्क में किया जाए।
johnshen64

7

अब तक एकत्रित जानकारी से, सर्वर sftp.pass.psu.edu Kerberos 5 (GSSAPI) प्रमाणीकरण का समर्थन करता है और पर है dce.psu.edu दायरे।

केर्बरोस है बहुत कई सर्वर और वर्कस्टेशन के साथ नेटवर्क पर आम; कई बड़े शिक्षण संस्थानों ने इसे स्थापित किया है। यदि सार्वजनिक-कुंजी प्रमाणीकरण पर इसके लाभ एक है कि एक kinit करबरोस दायरे में सभी मशीनों को स्वचालित रूप से क्रेडेंशियल्स प्रदान करता है, प्रत्येक को सार्वजनिक कुंजी कॉपी करने के लिए बिना। एक और प्रोटोकॉल सपोर्ट है - एक ही केर्बरोस क्रेडेंशियल्स का इस्तेमाल एसएसएच ही नहीं, बल्कि 30 से अधिक प्रोटोकॉल (मेल, फाइल सिस्टम, डेटाबेस ...) के साथ किया जा सकता है।

("क्लूलेस विंडोज-ओनली एडिंस" के बारे में: द dce.psu.edu क्षेत्र वास्तव में सक्रिय निर्देशिका पर आधारित है और विंडोज सर्वर द्वारा होस्ट किया गया प्रतीत होता है।)

इन चरणों का पालन करने का प्रयास करें:

  1. करबरोस में लॉग इन करें। ( kinit तथा klist उपकरण "krb5- उपयोगकर्ता" या इसी तरह के पैकेज में हो सकते हैं, यदि सिस्टम के साथ पहले से शामिल नहीं हैं।

     kinit  तुम्हारा प्रयोगकर्ती नाम  @ dce.psu.edu 

    यदि कोई त्रुटि प्रदर्शित नहीं होती है, तो लॉगिन सफल रहा। klist दिखाना चाहिए " krbtgt/dce.psu.edu@... “आइटम।

  2. अब SSH सर्वर से कनेक्ट करें, के साथ -vv विकल्प; अगर प्रमाणीकरण सफल होता है, तो अच्छा है।

    यदि ऐसा नहीं होता है, तो आपको अपना संपादन करना पड़ सकता है /etc/krb5.conf फ़ाइल। के नीचे [domain_realm] अनुभाग, निम्नलिखित जोड़ें:

    [domain_realm]
        .psu.edu = dce.psu.edu
    
  3. डिफ़ॉल्ट Krb5 सेटिंग्स के साथ, # 1 में प्राप्त टिकट 10 घंटे के लिए वैध होना चाहिए, और एक सप्ताह तक के लिए अक्षय होना चाहिए। हालाँकि मेरे पास सेटिंग्स को सत्यापित करने का कोई तरीका नहीं है।

    यदि आप एक फ़ाइल में पासवर्ड रखना चाहते हैं, तो एक सरल kinit your_principal < password.txt काम करना चाहिए, हालांकि यह पूरी तरह से विश्वसनीय नहीं है।

    साथ में ktutil इसे बनाना संभव है "Keytab" पासवर्ड के बजाय उपयोग के लिए।

     $ ktutil
    ktutil: addent -password -p  your_principal  -क 1-ई aes256-cts-hmac-sha1-96
    के लिए पासवर्ड  your_principal : *********
    ktutil: wkt  keytab_file  ktutil:  Ctrl  डी 
    

    और उपयोग करने में लॉग इन करें:

     $ kinit -kt  keytab_file   your_principal 
    

ऐसा लगता है कि यह मेरे लिए आदर्श के बहुत करीब होना चाहिए, लेकिन यह काम नहीं करता है - मैं करबरोस के साथ सफलतापूर्वक लॉगिन करने में सक्षम था (कोई त्रुटि संदेश नहीं), लेकिन मुझे अभी भी पासवर्ड के लिए संकेत मिलता है। से त्रुटि संदेश ssh -vv मेरे द्वारा पोस्ट किए गए ट्रेस के समान हैं जिन्हें मैं प्राप्त करता हूं debug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database इसके बजाय क्रेडेंशियल कैश फ़ाइल के बारे में बात नहीं की जा रही है।
David Z

आह, ऐसा लगता है कि "clueless Windows-only admins" ने केटब को स्थापित किया host/sftp.pass.psu.edu, लेकिन इसका असली नाम होना चाहिए था host/lutz.cac.psu.edu। आप इसे जोड़कर प्राप्त कर सकते हैं " 128.118.2.85 sftp.pass.psu.edu "आपके / etc / मेजबानों के लिए, लेकिन यह बदसूरत की तरह है - बहुत अच्छा होगा अगर व्यवस्थापक सर्वर तय ...
grawity

हाँ, यह होता है ... मैं उनसे इसके बारे में पूछूंगा, लेकिन अब उम्मीद है कि आपके फिक्स चीजों को निपटाना चाहिए। मैं कल इसकी कोशिश करूंगा।
David Z

@DavidZaslavsky: MIT Krb5 v1.10 कई मेजबान प्रिंसिपलों (यानी) का समर्थन करता है कि उन्हें उल्लेख करने के लिए उपयोगी हो सकता है दोनों host/lutz.cac.psu.edu तथा host/sftp.pass.psu.edu ) एक कीटेब में। (पिछले संस्करण केवल पहले वाले का उपयोग करते थे।)
grawity

क्षमा करें मैं वापस आना और इस पर प्रतिक्रिया देना भूल गया। संशोधित करने के बाद /etc/hosts जैसा कि मैंने सुझाव दिया है debug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)। आउटपुट में और कुछ भी त्रुटि के लिए प्रासंगिक नहीं है।
David Z

2

मैं एक मिश्रित समाधान पर विचार करूंगा, जहां आप केवल एक बार पासवर्ड दर्ज करते हैं, और कंप्यूटर दूरस्थ SSH सर्वर के लिए एक सॉकेट रखता है। आप अनुसरण कर सकते हैं ये कदम सेटअप करने के लिए ControlMaster सिर्फ उस कारण से।


जब मैं क्लाइंट को बंद कर दूंगा, तब मास्टर कनेक्शन रीसेट हो जाएगा। तो यह एक आदर्श समाधान नहीं है, लेकिन यह मेरी वर्तमान स्थिति पर थोड़ा सुधार होगा।
David Z

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