चरण 1
सुनिश्चित करें कि आपका स्थानीय एजेंट तैयार है
सिर्फ इसलिए कि आप अपने में ssh सकते गढ़ सर्वर अपने प्रमुख पथ निर्दिष्ट या पासवर्ड के लिए संकेत हो रही बिना, इसका मतलब यह नहीं है कि अपने ssh एजेंट चल रहा है और अपने प्रमुख पहना हुआ है। कुछ आधुनिक OSes (जैसे: OSX) आपके लिए इसे संभालते हैं।
अपने स्थानीय मशीन पर
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
चित्र एक
इसका मतलब है कि आपका एजेंट चल रहा है और आपकी चाबी है।
$ ssh-add -L
The agent has no identities.
रेखा चित्र नम्बर 2
इसका मतलब है कि आपने अपने एजेंट में कोई कुंजी नहीं जोड़ी है। इसे ठीक करें:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
fig.3
चरण 2
सुनिश्चित करें कि आपका रिमोट एजेंट तैयार है
SSH अपने गढ़ सर्वर में और fig.1 और fig.2 से जांच दोहराएं । हालाँकि, आपको मिलने वाली त्रुटि यह है:
$ ssh-add -L
Could not open a connection to your authentication agent.
Fig.4
यह सबसे अधिक संभावना है कि आपका SSH क्लाइंट आपके प्रमाणीकरण एजेंट कनेक्शन को अग्रेषित नहीं कर रहा है।
आप इसे -A
ध्वज के साथ बाध्य कर सकते हैं (जब तक कि सर्वर पर sshd config इसे अनुमति देता है, जो कि डिफ़ॉल्ट है )।
$ ssh -A bastion.ec2
Fig.5
चरण 3
सुनिश्चित करें कि आप सही कुंजियों का उपयोग कर रहे हैं
यदि आपने अपने एजेंट में कुंजियाँ जोड़ी हैं, तो आपका एजेंट अग्रेषित कर रहा है, और आपका दूरस्थ एजेंट आपके स्थानीय कुंजी को सूचीबद्ध करता है। केवल दो संभावित कारण हैं जिनसे आपको कनेक्शन नहीं मिल रहा है। या तो आप सही कुंजी का उपयोग नहीं कर रहे हैं या आप सही उपयोगकर्ता नाम का उपयोग नहीं कर रहे हैं।
अपनी निजी कुंजी के लिए सार्वजनिक समकक्ष का उत्पादन करें:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
Fig.6
ये तुम क्या से देख रहे थे के रूप में ही किया जाना चाहिए ssh-add -L
करने के लिए ==
अंत के पास।
अब एक या दूसरे तरीके से आपको उस बॉक्स में जाना होगा जिसे आप कनेक्ट करने में असफल हो रहे हैं और $HOME/.ssh/authorized_keys
उस उपयोगकर्ता के लिए फ़ाइल की सामग्री को देख रहे हैं जिसे आप कनेक्ट करने का प्रयास कर रहे हैं। आपको यह सुनिश्चित करने की आवश्यकता है कि ऊपर बताए गए आदेश के साथ आप जिस सार्वजनिक कुंजी का उत्पादन कर रहे हैं, वह उस फ़ाइल पर एक पंक्ति में ही है। आप विश्वास नहीं कर सकते हैं कि sharedkey.pub
भाई 2 क्यूब्स ने आपको सही ईमेल किया है। सत्यापित करें! इसके लिए आपको किसी अन्य व्यक्ति को प्राप्त करने की आवश्यकता हो सकती है जो SSH को उस उपयोगकर्ता के रूप में आपको अधिकृत_की फ़ाइल प्राप्त करने या रूट एक्सेस प्राप्त करने के लिए कर सकता है। यदि आप यह बहुत दूर आ गए हैं और यह अभी भी काम नहीं कर रहा है, तो आप शॉर्टकट लेने से परे हैं।
चरण 4
इसे आसान बनाएं
उम्मीद है कि ऊपर दिए गए चरणों ने आपको अंदर खींच लिया है। अब आप इस सिरदर्द को तब तक के लिए दूर कर दें जब तक आप इस कार्य केंद्र का उपयोग कर रहे हैं।
अपने स्थानीय ssh- क्लाइंट को कॉन्फ़िगर करें
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh admin@172.31.18.19
Fig.7
आप से कुछ और दूर कुछ भी नहीं लेते हैं Fig.7 यह के समुचित उपयोग होना चाहिए ProxyCommand
और ForwardAgent
।
ऑटो अपने .bash_profile को आबाद करें
ssh-add
हर बार जब आप अपनी मशीन में लॉग इन करते हैं तो आपको मैन्युअल रूप से नहीं करना होता है । ~/.bash_profile
एक स्क्रिप्ट है जो हर बार जब आप लॉगिन करते हैं **। अंजीर से लाइन लगाएं। वहाँ में 3 और आप हमेशा अपने एजेंट तैयार होना चाहिए।
** इसे भ्रमित न करें .bashrc
जिसके साथ प्रत्येक नए [संवादात्मक] टर्मिनल के लिए चलता है। यदि आप अपने सभी टर्मिनल सत्रों को बंद कर देते हैं तो भी आपका एजेंट चालू रहता है। अपनी चाबी पुनः लोड करने की आवश्यकता नहीं
उपयोग करने के लिए वैकल्पिक .bash_profile
मैंने एक gist भी बनाया है जो OSX / macOS Launch Agent को जोड़ता है । आप ssh-agent
बूट पर अपना काम शुरू करने के लिए उस विधि का उपयोग कर सकते हैं । इसे स्थापित करना बहुत आसान है:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
साथ बाध्य नहीं कर सकते-A
।