सार्वजनिक कुंजी हमेशा पासवर्ड और कीफ़्रेज़ के लिए पूछती है


19

मैं एक सार्वजनिक कुंजी का उपयोग करके एक वेब से एक वेबसर्वर के लिए SSH के लिए कोशिश कर रहा हूँ। NAS उपयोगकर्ता 'रूट' है और वेबसर्वर उपयोगकर्ता 'बैकअप' है

मेरे पास सभी अनुमतियाँ सही तरीके से सेट हैं और जब मैं SSH कनेक्शन को डिबग करता हूं तो मुझे प्राप्त होता है: (डिबग का अंतिम थोड़ा सा)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

मैं कमांड का उपयोग कर रहा हूं:

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

तथ्य यह है कि यह पासफ़्रेज़ के लिए पूछ रहा है निश्चित रूप से एक अच्छा संकेत है, लेकिन मैं नहीं चाहता कि इसके लिए यह संकेत या एक पासवर्ड (जो बाद में आता है अगर मैं पासफ़्रेज़ पर 'रिटर्न' दबाता हूं)

जवाबों:


24

Thats क्योंकि आपकी निजी कुंजी एन्क्रिप्टेड है ...

आप ssh-addनिम्नलिखित कुंजी का उपयोग करके कुंजी से पासफ़्रेज़ (और इसके साथ एन्क्रिप्शन) का उपयोग करके या हटाकर ssh एजेंट में अपनी कुंजी जोड़ सकते हैं :

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


संपादित करें

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

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

और बस पूरी तरह से सुनिश्चित करने के लिए, फ़ाइल की सामग्री वेबसर्वर पर id_dsa.pubजाती है ~backup/.ssh/authorized_keys। आप स्वचालित रूप से ऐसा करने के लिए निम्न आदेश का उपयोग कर सकते हैं

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

अभी भी मुद्दा मिलता है। इसने काम किया और मुझे 'आपकी पहचान नए पासफ़्रेज़ के साथ बचाई गई' के साथ दी गई। लेकिन फिर भी अगली बार जब मैं कोशिश करता हूं और लॉगिन करता हूं तो पासफ़्रेज़ के लिए कहता हूं। मुझे यकीन नहीं है कि और क्या करने की कोशिश की ...
एंड्रयू एटकिंसन

मेरे अद्यतन जवाब की जांच ... शायद कि मदद करता है ...
andrekeller

धन्यवाद, ऐसा लगता है कि मैं संभवतः सार्वजनिक कुंजी की सार्वजनिक कुंजी की तुलना करने की कोशिश कर रहा था ... मुझे पासफ़्रेज़ को हटाने की आवश्यकता नहीं थी
एंड्रयू एटकिंसन

तथ्य यह है कि मैं अपने पब को प्रमाणित करने के लिए उपयोग कर रहा था (एक बेवकूफ गलती) मुद्दा था। धन्यवाद!
Qix

6

यह मेरे साथ तब हुआ जब मेरे पास निजी कुंजी ओपनएसएसएच प्रारूप में नहीं थी।

मैंने मूल रूप से PuttyGen का उपयोग करके विंडोज़ पर अपनी कुंजी उत्पन्न की और इसी चीज़ के साथ बाउंस हो रहा था।

मैं इसे PuttyGen में कुंजी लोड करके और इसे "OpenSH" प्रारूप में लाने के लिए "रूपांतरण" पर क्लिक करके इसे ठीक करने में सक्षम था।


2

कुछ चीजें हैं।

मुख्य रूप से, यदि कुंजी पासवर्ड के लिए पूछ रही है, तो कुंजी इसके साथ उत्पन्न हुई थी। दूसरे, अगर सिस्टम पासवर्ड के बाद प्रॉम्प्ट कर रहा है, तो कुंजी प्रामाणिक नहीं है। मतलब, आपको अपनी SSH कुंजी (या इसे @rbtux द्वारा सुझाए गए अनुसार बदलना होगा) को फिर से बनाना होगा और अधिकृत_की फ़ाइलों को ठीक करना होगा।

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "वैकल्पिक टिप्पणी" -f id_examplekey

घुंघराले ब्रैकेट में आइटम विकल्प, प्रकार और बिट आकार हैं (स्पष्ट रूप से बताने के लिए: dsa> rsa, 4096> 1024 - "सुरक्षा" के संदर्भ में)।

फिर आपको सार्वजनिक कुंजी (.pub) को फ़ाइलों authorized_keysऔर authorized_keys2फ़ाइलों में जोड़ने की आवश्यकता है (यह कहना एक आम ग़लतफ़हमी है। .pub स्थानीय उपयोग के लिए है, हालाँकि यह तुलना करने का इरादा है) इसलिए सर्वर के .sshफ़ोल्डर में।

$ cat id_examplekey.pub >> अधिकृत_की {, 2}

फिर अपने अंत पर, आपको यह सुनिश्चित करना चाहिए कि कुंजी अनुमतियाँ हैं chmod 600 id_exampleऔर वह सब टाइप करने को समाप्त करने के लिए, आप कॉन्फ़िगर फ़ाइल को सेट कर सकते हैं: ~/.ssh/configअपने स्थानीय बॉक्स पर (यह एक कंकाल है, आप इसे एक टन अनुकूलित कर सकते हैं):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

लेकिन डीबग में जो खंड पढ़ता है: debug1: सर्वर कुंजी को स्वीकार करता है: pkalg ssh-dss blen 433 इसका मतलब यह नहीं है कि कुंजी को स्वीकार कर लिया गया है? मैंने फिर से बिना किसी पासफ़्रेज़ के, फिर से वही बना दिया है? - मुझे कोई विचार नहीं सूझ रहा? धन्यवाद
एंड्रयू एटकिंसन

@AndrewAtkinson लगता है कि आपने इसे नीचे पा लिया है। आपको मशीन (स्थानीय, क्लाइंट, जो भी हो) और public.pub कुंजी से अधिकृत_की फाइलों में जोड़ा गया है। मेरे अन्य सुझावों से आपको समय बचाने में मदद मिलेगी: डी गुड लक!
nddwaller

आप लिखते हैं "मुख्य रूप से, यदि कुंजी एक पासवर्ड के लिए पूछ रही है, तो कुंजी इसके साथ उत्पन्न हुई थी।" <- हाँ हालांकि मैंने अभी-अभी परीक्षण किया कि प्रश्नकर्ता ने क्या किया, इसलिए, सार्वजनिक कुंजी के साथ-कर रहा $ ssh user@comp -i ~/.ssh/id_rsa.pubहूं और इसने गलत अनुमतियाँ और निजी कहा कुंजी को नजरअंदाज किया जाएगा .. इसलिए मैंने id_rsa जैसी अनुमतियों को 600 में बदल दिया, और इसने पासफ़्रेज़ के लिए कहा। तो, वास्तव में, यह तब पासफ़्रेज़ के लिए पूछेगा यदि आप सार्वजनिक कुंजी निर्दिष्ट करते हैं, भले ही सार्वजनिक कुंजी और निजी कुंजी दोनों पासफ़्रेज़ के साथ उत्पन्न नहीं हुए थे
बार्लोप

2

मेरे लिए जब से कुंजी स्वयं एन्क्रिप्ट की गई थी, मैंने निम्नलिखित चरणों का पालन किया:

  • शुरू ssh- एजेंट: $ ssh-agent bash
  • कुंजी प्रबंधक में मानक पहचान कुंजी जोड़ें: $ ssh-add
  • यदि आप एक अलग कुंजी जोड़ना चाहते हैं, तो: $ ssh-add /location/of/key

किसी भी समय निरीक्षण करने के लिए, वर्तमान में भरी हुई चाबियों की सूची:

$ ssh-add -l

इस लिंक से अधिक जानकारी प्राप्त की जा सकती है


1

कोशिश https://wiki.gentoo.org/wiki/Keychain

यह एक तरह की लपेट है ssh-agentऔरssh-add

पेशेवरों: जब तक आप रिबूट नहीं करते तब तक बार-बार पासवर्ड इनपुट करने की आवश्यकता नहीं है। में इस्तेमाल किया जा सकता है crontab

यह मदद हो सकती है।


1

यह हो सकता है क्योंकि आप एक DSA pubkey का उपयोग कर रहे हैं जो OpenSSH v7 में डिफ़ॉल्ट रूप से अक्षम है।

यदि आप मुख्य जोड़ी को बदल नहीं सकते हैं, तो संभावित /etc/ssh/sshd_configपंक्ति को निम्नलिखित पंक्ति को जोड़कर या बराबर करके उन कुंजी प्रकारों को स्वीकार करने के लिए webserver.com पर अपने SSH डेमन को बताना संभव हो जाएगा।

PubkeyAcceptedKeyTypes=+ssh-dss

और फिर सेवा को पुनरारंभ करना

/etc/init.d/ssh restart                     # or equivalent

0

Mac OSX पर आप कमांड का उपयोग करके अपनी निजी कुंजी को किचेन में जोड़ सकते हैं:

ssh-add -K /path/to/private_key

यदि आपकी निजी कुंजी ~ / .sh पर संग्रहीत है और इसे id_rsa नाम दिया गया है:

ssh-add -K ~/.ssh/id_rsa

फिर आपको अपने पासवर्ड के लिए संकेत दिया जाएगा, जिसे आपके किचेन में स्टोर किया जाएगा।


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