आप ssh-keygen और ssh-copy-id का उपयोग करके 3 सरल चरणों में पासवर्ड दर्ज किए बिना रिमोट लिनक्स सर्वर पर लॉगिन कर सकते हैं जैसा कि इस लेख में बताया गया है।
ssh-keygen सार्वजनिक और निजी कुंजी बनाता है। ssh-copy-id स्थानीय-होस्ट की सार्वजनिक कुंजी को रिमोट-होस्ट की authorized_keys फ़ाइल में कॉपी करता है। ssh-copy-id रिमोट-होस्ट के होम, ~/.ssh, और ~/.ssh/authorized_keys को उचित अनुमति भी देता है।
यह लेख ssh-copy-id के 3 मामूली झंझटों और ssh-copy-id का ssh-agent के साथ उपयोग करने का तरीका भी बताता है।
चरण 1: स्थानीय-होस्ट पर ssh-key-gen का उपयोग करके सार्वजनिक और निजी कुंजी बनाएं
jsmith@local-host$ [नोट: आप यहां स्थानीय-होस्ट पर हैं] jsmith@local-host$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key] Enter passphrase (empty for no passphrase): [Press enter key] Enter same passphrase again: [Pess enter key] Your identification has been saved in /home/jsmith/.ssh/id_rsa. Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub. The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host
चरण 2: ssh-copy-id का उपयोग करके सार्वजनिक कुंजी को रिमोट-होस्ट पर कॉपी करें
jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host jsmith@remote-host's password: Now try logging into the machine, with "ssh 'remote-host'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
नोट: ssh-copy-id रिमोट-होस्ट की .ssh/authorized_key में कुंजी जोड़ता है।
चरण 3: पासवर्ड दर्ज किए बिना रिमोट-होस्ट पर लॉगिन करें
jsmith@local-host$ ssh remote-host Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2 [नोट: SSH ने पासवर्ड नहीं पूछा।] jsmith@remote-host$ [नोट: आप यहां रिमोट-होस्ट पर हैं]
उपरोक्त 3 सरल चरण अधिकांश मामलों में काम पूरा कर देंगे।
हमने पहले openSSH से openSSH तक SSH और SCP को बिना पासवर्ड दर्ज किए करने के बारे में विस्तार से चर्चा की थी।
यदि आप SSH2 का उपयोग कर रहे हैं, तो हमने पहले SSH2 से SSH2, OpenSSH से SSH2 और SSH2 से OpenSSH तक बिना पासवर्ड के SSH और SCP करने के बारे में चर्चा की थी।
ssh-copy-id का ssh-add/ssh-agent के साथ उपयोग करना
जब विकल्प -i के लिए कोई मान नहीं दिया जाता है और यदि ~/.ssh/identity.pub उपलब्ध नहीं है, तो ssh-copy-id निम्न त्रुटि संदेश प्रदर्शित करेगा।
jsmith@local-host$ ssh-copy-id -i remote-host /usr/bin/ssh-copy-id: ERROR: No identities found
यदि आपने ssh-add का उपयोग करके ssh-agent में कुंजी लोड की है, तो ssh-copy-id रिमोट-होस्ट पर कॉपी करने के लिए ssh-agent से कुंजी प्राप्त करेगा। यानी, जब आप ssh-copy-id को विकल्प -i पास नहीं करते हैं, तो यह ssh-add -L कमांड द्वारा प्रदान की गई कुंजियों को रिमोट-होस्ट पर कॉपी करता है।
jsmith@local-host$ ssh-agent $SHELL jsmith@local-host$ ssh-add -L The agent has no identities. jsmith@local-host$ ssh-add Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa) jsmith@local-host$ ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa jsmith@local-host$ ssh-copy-id -i remote-host jsmith@remote-host's password: Now try logging into the machine, with "ssh 'remote-host'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [नोट: इसने ssh-add -L द्वारा प्रदर्शित कुंजी जोड़ी]
ssh-copy-id की तीन मामूली झंझटें
ssh-copy-id की कुछ मामूली झंझटें निम्नलिखित हैं।
- डिफ़ॉल्ट सार्वजनिक कुंजी: ssh-copy-id ~/.ssh/identity.pub को डिफ़ॉल्ट सार्वजनिक कुंजी फ़ाइल के रूप में उपयोग करता है (यानी जब विकल्प -i को कोई मान नहीं दिया जाता है)। इसके बजाय, मैं चाहता हूं कि यह id_dsa.pub, या id_rsa.pub, या identity.pub को डिफ़ॉल्ट कुंजी के रूप में उपयोग करे। यानी यदि उनमें से कोई एक मौजूद है, तो उसे रिमोट-होस्ट पर कॉपी करना चाहिए। यदि उनमें से दो या तीन मौजूद हैं, तो डिफ़ॉल्ट रूप से identity.pub कॉपी करना चाहिए।
- एजेंट की कोई पहचान नहीं: जब ssh-agent चल रहा हो और ssh-add -L "The agent has no identities" लौटाता है (यानी ssh-agent में कोई कुंजी नहीं जोड़ी गई), तो ssh-copy-id अभी भी संदेश "The agent has no identities" को रिमोट-होस्ट के authorized_keys प्रविष्टि में कॉपी कर देगा।
- authorized_keys में डुप्लिकेट प्रविष्टि: मैं चाहता हूं कि ssh-copy-id रिमोट-होस्ट के authorized_keys पर डुप्लिकेट प्रविष्टि को मान्य करे। यदि आप स्थानीय-होस्ट पर ssh-copy-id को कई बार निष्पादित करते हैं, तो यह डुप्लिकेट की जांच किए बिना रिमोट-होस्ट की authorized_keys फ़ाइल पर वही कुंजी जोड़ता रहेगा। डुप्लिकेट प्रविष्टियों के साथ भी सब कुछ अपेक्षित रूप से काम करता है। लेकिन, मैं अपनी authorized_keys फ़ाइल को अव्यवस्था मुक्त रखना चाहूंगा।
यदि आप इस लेख को पसंद करते हैं, तो कृपया इसे Delicious और Stumble it पर बुकमार्क करें।