मौजूदा EC2 उदाहरण के लिए Keypair जोड़ें


240

मुझे एक खाते में AWS कंसोल का उपयोग 2 उदाहरणों के साथ दिया गया था, जिसे मैं बंद नहीं कर सकता (उत्पादन में)। लेकिन मैं इन उदाहरणों तक एसएसएच पहुंच प्राप्त करना चाहूंगा, क्या यह एक नया कीपर बनाना और इंस्टेंस पर लागू करना संभव है ताकि मैं एसएसएच में प्रवेश कर सकूं? कीपर के लिए एक्ज़िटिंग पेम फ़ाइल प्राप्त करना इंस्टेंस के तहत बनाया गया था वर्तमान में एक विकल्प नहीं है।

अगर यह संभव नहीं है तो क्या कोई और तरीका है जो मैं उदाहरणों में प्राप्त कर सकता हूं?


क्या आपने यहां समाधान का प्रयास किया है: stackoverflow.com/questions/1454629/… ? ssh-addआपको जो चाहिए वो करना चाहिए।
मार्क बोलिंगर

Ssh-add फीचर सीखना अच्छा है, लेकिन यह मदद नहीं करेगा क्योंकि इस उपयोगकर्ता ने वास्तव में अपने द्वारा बनाए गए कीपर का उपयोग करके उदाहरण बनाया है। जिन उदाहरणों का मैं उल्लेख कर रहा हूं, वे एक अन्य कीपर के साथ बनाए गए थे, जिनकी मुझे पहुंच नहीं है।
क्रिस वैग्नर

1
हो सकता है कि आप बेहतर तरीके से serverfault.com
क्लॉड वेदोविनी

4
आप एक चल उदाहरण के लिए एक कीपर लागू नहीं कर सकते।
रोडनी क्विलो

जवाबों:


172

आप एक चल उदाहरण के लिए एक कीपर लागू नहीं कर सकते। आप एक नया उदाहरण लॉन्च करने के लिए केवल नई कीपर का उपयोग कर सकते हैं।

पुनर्प्राप्ति के लिए, यदि यह ईबीएस बूट एएमआई है, तो आप इसे रोक सकते हैं, वॉल्यूम का स्नैपशॉट बना सकते हैं। इसके आधार पर एक नया वॉल्यूम बनाएं। और पुराने उदाहरण को शुरू करने, एक नई छवि बनाने, या डेटा को पुनर्प्राप्त करने के लिए इसका उपयोग करने में सक्षम हो।

हालांकि अल्पकालिक भंडारण में डेटा खो जाएगा।


इस सवाल और जवाब की लोकप्रियता के कारण, मैं लिंक में जानकारी को कैप्चर करना चाहता था जो रॉडनी ने अपनी टिप्पणी पर पोस्ट किया था।

इस जानकारी के लिए क्रेडिट एरिक हैमंड को जाता है ।

ईसी 2 इंस्टेंस के रूट ईबीएस वॉल्यूम पर फाइलें फिक्स करना

आप EC2 उदाहरण पर रूट EBS वॉल्यूम पर फ़ाइलों की जांच कर सकते हैं और संपादित कर सकते हैं, भले ही आप उस स्थिति में हों, जिसे आप एक विनाशकारी स्थिति मानते थे:

  • आपने अपनी ssh कुंजी खो दी या अपना पासवर्ड भूल गए
  • आपने / etc / sudoers फ़ाइल को संपादित करने में गलती की है और इसे ठीक करने के लिए sudo के साथ रूट एक्सेस प्राप्त नहीं कर सकता है
  • आपका लंबे समय तक चलने का उदाहरण किसी कारण से लटका हुआ है, संपर्क नहीं किया जा सकता है, और ठीक से बूट करने में विफल रहता है
  • आपको फ़ाइलों को आवृत्ति से पुनर्प्राप्त करने की आवश्यकता है, लेकिन इसे प्राप्त नहीं कर सकते

आपके डेस्क पर बैठे एक भौतिक कंप्यूटर पर, आप सिस्टम को सीडी या यूएसबी स्टिक के साथ बूट कर सकते हैं, हार्ड ड्राइव को माउंट कर सकते हैं, फाइलों को ठीक कर सकते हैं, फिर कंप्यूटर को व्यवसाय में वापस लाने के लिए रिबूट कर सकते हैं।

जब आप इनमें से किसी एक स्थिति में होते हैं तो एक सुदूर EC2 उदाहरण दूर और दुर्गम लगता है। सौभाग्य से, AWS हमें इस तरह की प्रणाली को पुनर्प्राप्त करने में सक्षम होने के लिए शक्ति और लचीलापन प्रदान करता है, बशर्ते कि हम ईबीएस बूट इंस्टेंस चला रहे हों, उदाहरण के लिए नहीं।

EC2 पर दृष्टिकोण कुछ हद तक भौतिक समाधान के समान है, लेकिन हम दोषपूर्ण "हार्ड ड्राइव" (रूट ईबीएस वॉल्यूम) को एक अलग उदाहरण में स्थानांतरित करने और माउंट करने जा रहे हैं, इसे ठीक करें, फिर इसे वापस ले जाएं।

कुछ स्थितियों में, नए EC2 उदाहरण को शुरू करना और खराब को फेंकना आसान हो सकता है, लेकिन अगर आप वास्तव में अपनी फ़ाइलों को ठीक करना चाहते हैं, तो यहां वह दृष्टिकोण है जो कई के लिए काम कर रहा है:

सेट अप

मूल उदाहरण (ए) और मात्रा को पहचानें जिसमें टूटी हुई रूट ईबीएस मात्रा उन फ़ाइलों के साथ है जिन्हें आप देखना और संपादित करना चाहते हैं।

instance_a=i-XXXXXXXX

volume=$(ec2-describe-instances $instance_a |
  egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)

दूसरे ईसी 2 उदाहरण (बी) को पहचानें जो आप मूल ईबीएस वॉल्यूम पर फ़ाइलों को ठीक करने के लिए उपयोग करेंगे। यह उदाहरण उदाहरण A के समान उपलब्धता ज़ोन में चल रहा होना चाहिए ताकि इसमें EBS वॉल्यूम संलग्न हो सके। यदि आपके पास पहले से चल रहा उदाहरण नहीं है, तो एक अस्थायी शुरुआत करें।

instance_b=i-YYYYYYYY

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

ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume

S को B पर सेट करने और वॉल्यूम माउंट करने के लिए ssh ताकि आप इसकी फाइल सिस्टम तक पहुंच सकें।

ssh ...instance b...

sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a

इसे ठीक करो

इस बिंदु पर उदाहरण ए से आपका पूरा रूट फाइल सिस्टम ए / बी पर उदाहरण के तहत देखने और संपादन के लिए उपलब्ध है। उदाहरण के लिए, आप चाहते हैं:

  • / Sol-a/home/ubuntu/.ssh/authorized_keys में सही ssh कीज लगाएं
  • संपादित करें और / vol-a / etc / sudoers को ठीक करें
  • / Vol-a / var / log / syslog में त्रुटि संदेश देखें
  • महत्वपूर्ण फाइलों को कॉपी करें / vol-a /…

नोट: दो उदाहरणों पर uids समान नहीं हो सकते हैं, इसलिए ध्यान रखें कि यदि आप गैर-रूट उपयोगकर्ताओं से संबंधित फ़ाइलों का निर्माण, संपादन या प्रतिलिपि बना रहे हैं। उदाहरण के लिए, उदाहरण के लिए आपके mysql उपयोगकर्ता के पास उदाहरण U पर आपके पोस्टफ़िक्स उपयोक्ता के समान UID हो सकता है, जो समस्याओं का कारण बन सकता है यदि आप फ़ाइलों को एक नाम से जोड़ते हैं और फिर वॉल्यूम वापस A में ले जाते हैं।

लपेटें

आपके द्वारा किए जाने के बाद और आप / vol-a के तहत आने वाली फाइलों से खुश हैं, फ़ाइल सिस्टम को अनमाउंट करें (अभी भी उदाहरण-बी पर):

sudo umount /vol-a
sudo rmdir /vol-a

अब, ec2-api-tools के साथ अपने सिस्टम पर वापस जाएं, मूल उदाहरण A पर घर में ईबीएस वॉल्यूम को वापस ले जाना जारी रखें और फिर से उदाहरण शुरू करें:

ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a

उम्मीद है, आपने समस्या को ठीक कर दिया है, उदाहरण ए ठीक है, और आप इसे पूरा कर सकते हैं जो आप मूल रूप से करने के लिए तैयार हैं। यदि नहीं, तो आपको इन चरणों को दोहराते रहने की आवश्यकता हो सकती है जब तक कि आपके पास यह काम न हो।

नोट: यदि आपके पास जब आप इसे बंद करने के लिए A को सौंपा गया एक इलास्टिक IP पता था, तो उसे फिर से शुरू करने के बाद आपको इसे फिर से लिखना होगा।

याद है! यदि आपका उदाहरण B अस्थायी रूप से इस प्रक्रिया के लिए शुरू किया गया था, तो इसे अभी समाप्त करना न भूलें।


क्या आप हमें इसके लिए एक चरण-दर-चरण मार्गदर्शिका (या इसे इंगित कर सकते हैं) बता सकते हैं। मेरे मामले में, मेरे पास एक मौजूदा चल रहा उदाहरण है और इसे दूरस्थ स्थान से लॉग इन करने की आवश्यकता है, जहां मेरे पास निजी कुंजी नहीं है।
जुस १२

87

यद्यपि आप सीधे चल रहे EC2 उदाहरण में एक प्रमुख जोड़ी नहीं जोड़ सकते हैं, आप एक linux उपयोगकर्ता बना सकते हैं और उसके लिए एक नई कुंजी जोड़ी बना सकते हैं, फिर इसका उपयोग कर सकते हैं जैसे आप मूल उपयोगकर्ता की प्रमुख जोड़ी के साथ करेंगे।

आपके मामले में, आप निम्न करने के लिए उदाहरण के स्वामी (जिसने इसे बनाया है) से पूछ सकते हैं। इस प्रकार, उदाहरण के स्वामी को अपनी स्वयं की कुंजी आपके साथ साझा करने की आवश्यकता नहीं है, लेकिन आप अभी भी इन उदाहरणों में ssh कर पाएंगे। इन चरणों को मूल रूप से उत्कर्ष सेंगर (aka। @Zengr ) ने http://utkarshsengar.com/2011/01/manage-multiple-accounts-on-1-amazon-ec2-instance/ पर पोस्ट किया था । मैंने केवल कुछ छोटे बदलाव किए हैं।

  1. चरण 1: डिफ़ॉल्ट रूप से "ubuntu" उपयोगकर्ता द्वारा लॉगिन करें :

    $ ssh -i my_orig_key.pem ubuntu@111.111.11.111
    
  2. चरण 2: एक नया उपयोगकर्ता बनाएं, हम अपने नए उपयोगकर्ता को "जॉन" कहेंगे :

    [ubuntu@ip-11-111-111-111 ~]$ sudo adduser john
    

    "जॉन" के लिए पासवर्ड सेट करें:

    [ubuntu@ip-11-111-111-111 ~]$ sudo su -
    [root@ip-11-111-111-111 ubuntu]# passwd john
    

    सूदरों की सूची में "जॉन" जोड़ें:

    [root@ip-11-111-111-111 ubuntu]# visudo
    

    .. और फ़ाइल के अंत में निम्नलिखित जोड़ें:

    john   ALL = (ALL)    ALL
    

    ठीक है! हमारे पास हमारा नया उपयोगकर्ता बनाया गया है, अब आपको कुंजी फ़ाइल तैयार करनी होगी जिसे लॉगिन करने की आवश्यकता होगी, जैसे हमारे पास चरण 1 में my_orin_key.pem है।

    अब, बाहर निकलें और ubuntu पर वापस जाएं, जड़ से बाहर।

    [root@ip-11-111-111-111 ubuntu]# exit
    [ubuntu@ip-11-111-111-111 ~]$
    
  3. चरण 3: सार्वजनिक और निजी कुंजी बनाना :

    [ubuntu@ip-11-111-111-111 ~]$ su john
    

    चरण 2 में "जॉन" के लिए आपके द्वारा बनाया गया पासवर्ड दर्ज करें। याद रखें कि कुंजी जोड़ी के लिए पासफ़्रेज़ कम से कम 4 अक्षर होना चाहिए।

    [john@ip-11-111-111-111 ubuntu]$ cd /home/john/
    [john@ip-11-111-111-111 ~]$ ssh-keygen -b 1024 -f john -t dsa
    [john@ip-11-111-111-111 ~]$ mkdir .ssh
    [john@ip-11-111-111-111 ~]$ chmod 700 .ssh
    [john@ip-11-111-111-111 ~]$ cat john.pub > .ssh/authorized_keys
    [john@ip-11-111-111-111 ~]$ chmod 600 .ssh/authorized_keys
    [john@ip-11-111-111-111 ~]$ sudo chown john:ubuntu .ssh
    

    उपरोक्त चरण में, जॉन हमारे द्वारा बनाया गया उपयोगकर्ता है और ubuntu डिफ़ॉल्ट उपयोगकर्ता समूह है।

    [john@ip-11-111-111-111 ~]$ sudo chown john:ubuntu .ssh/authorized_keys
    
  4. चरण 4: अब आपको बस “जॉन” नामक कुंजी डाउनलोड करनी होगी । मैं EC2 से फ़ाइलें डाउनलोड / अपलोड करने के लिए scp का उपयोग करता हूं, यहां बताया गया है कि आप इसे कैसे कर सकते हैं।

    आपको अभी भी ubuntu उपयोगकर्ता का उपयोग करके फ़ाइल की प्रतिलिपि बनाने की आवश्यकता होगी , क्योंकि आपके पास केवल उस उपयोगकर्ता नाम की कुंजी है। तो, आपको ubuntu फ़ोल्डर की कुंजी को स्थानांतरित करना होगा और इसे 777 पर चोदना होगा।

    [john@ip-11-111-111-111 ~]$ sudo cp john /home/ubuntu/
    [john@ip-11-111-111-111 ~]$ sudo chmod 777 /home/ubuntu/john
    

    अब स्थानीय मशीन के टर्मिनल पर आएं, जहां आपके पास my_orig_key.pem फ़ाइल है और यह करें:

    $ cd ~/.ssh
    $ scp -i my_orig_key.pem ubuntu@111.111.11.111:/home/ubuntu/john john
    

    उपरोक्त आदेश आपके स्थानीय मशीन पर वर्तमान कार्य निर्देशिका के लिए कुंजी "जॉन" की नकल करेगा। एक बार जब आप अपने स्थानीय मशीन की कुंजी की नकल कर लेते हैं, तो आपको "घर / ubuntu / john" को हटा देना चाहिए, क्योंकि यह एक निजी कुंजी है।

    अब, अपने एक स्थानीय मशीन chmod जॉन को 600।

    $ chmod 600 john
    
  5. चरण 5: अपनी कुंजी का परीक्षण करने का समय :

    $ ssh -i john john@111.111.11.111
    

तो, इस तरीके से, आप एक EC2 उदाहरण का उपयोग करने के लिए कई उपयोगकर्ताओं को सेटअप कर सकते हैं !!


4
यह उपयोगी है, लेकिन अंतिम चरण के रूप में आपको रिमोट मशीन से निजी कुंजी को नहीं हटाना चाहिए? उदाहरण के उपयोग के साथ इस तरह अन्य लोगों को भी यह कॉपी नहीं कर सकते और लॉग इन करने के लिए अपने कुंजी का उपयोग करें।
culix

यह मेरे लिए काम करता है। लेकिन मैं यहाँ से ubuntu उपयोगकर्ता को कैसे नेविगेट करूँगा क्योंकि मैं जिन फ़ाइलों पर काम कर रहा हूँ, वे ubuntu उपयोगकर्ता निर्देशिका में हैं। यह मुझे जॉन उपयोगकर्ता समूह में ले जाएगा। उबंटू 14.04.4 एलटीएस
ऑलजोश

यह मेरे लिए काम नहीं किया। इसने अवैध अनुमति दी। मुझे ec2 कंसोल से मुख्य जोड़ी बनानी थी, फिर इसने काम करना शुरू किया
डार्क नाइट

11

अपने स्थानीय मशीन पर, कमांड चलाएँ:

ssh-keygen -t rsa -C "SomeAlias"

उसके बाद कमांड चलता है, * .pub में समाप्त होने वाली फाइल उत्पन्न होगी। उस फ़ाइल की सामग्री की प्रतिलिपि बनाएँ।

अमेज़ॅन मशीन पर, ~ / .sh / अधिकृत_कीप को संपादित करें और * .pub फ़ाइल की सामग्री पेस्ट करें (और पहले किसी मौजूदा सामग्री को हटा दें)।

फिर आप ssh-keygen कमांड (निजी कुंजी) से उत्पन्न की गई अन्य फ़ाइल का उपयोग करके SSH कर सकते हैं।


तो जैसे @Dan ने उल्लेख किया कि इस फ़ाइल को संपादित करने के लिए आपके इंस्टेंस तक पहुँच को बदलना संभव है, लेकिन आप कभी भी मेटा डेटा स्तर पर उदाहरण के साथ जुड़ी कीपर को बदलने में सक्षम नहीं होंगे। अपने सार्वजनिक के अंत में .pem फ़ाइल का नाम जोड़ना न भूलें, उदा:ssh-rsa AAAAB3NzaC1yc2EA...DsGt66 my-key-pair
रिकार्डो मुटि

7

यह मेरे साथ पहले हुआ था (किसी EC2 उदाहरण के लिए किसी और ने एक्सेस नहीं किया था, लेकिन AWS वेब कंसोल तक पहुंच थी) और मैंने इसका जवाब दिया: http://readystate4.com/2013/04/09/aws-gaining- ssh-पहुँच करने के लिए एक-EC2-उदाहरण में आप खो-एक्सेस करने के लिए /

मूल रूप से, आप ईबीएस ड्राइव को अलग कर सकते हैं, इसे ईसी 2 से संलग्न कर सकते हैं जो आपके पास है। करने के लिए अपने SSH पब कुंजी जोड़ें~ec2-user/.ssh/authorized_keysइस संलग्न ड्राइव पर । फिर इसे पुराने EC2 उदाहरण पर वापस रखें। अमेज़ॅन एएमआई का उपयोग करके लिंक में चरण-दर-चरण।

स्नैपशॉट बनाने या कोई नया क्लोन बनाने की आवश्यकता नहीं है।


6

मेरे मामले में मैंने इस दस्तावेज़ का उपयोग इलास्टिक बीनस्टॉक के मेरे उदाहरण के साथ एक महत्वपूर्ण जोड़ी को जोड़ने के लिए किया

जरूरी

आपको अमेज़ॅन EC2 कुंजी जोड़ी बनानी होगी और अपने Elastic Beanstalk- प्रावधानित Amazon EC2 उदाहरणों तक पहुँचने से पहले Amazon EC2 कुंजी जोड़ी का उपयोग करने के लिए अपने Elastic Beanstalk- प्रोविज़न किए गए Amazon EC2 इंस्टेंस को कॉन्फ़िगर करना होगा। आप AWS प्रबंधन कंसोल का उपयोग करके अपने Amazon EC2 कुंजी जोड़े सेट कर सकते हैं। अमेज़ॅन EC2 के लिए एक महत्वपूर्ण जोड़ी बनाने के निर्देश के लिए, अमेज़ॅन इलास्टिक कम्प्यूट क्लाउड क्लाउड स्टार्टिंग गाइड देखें।

Elastic Beanstalk के साथ Amazon EC2 सर्वर इंस्टेंसेस को कॉन्फ़िगर करना


1
धन्यवाद, @ kamal-Essajidi! EB का उपयोग करने वाले अन्य लोगों के लिए: एक बार आपके पास एक महत्वपूर्ण जोड़ी होने के बाद, आप इसे कॉन्फ़िगरेशन> इंस्टेंस> EC2 जोड़े में अपने इलास्टिक बीनस्टॉक में जोड़ सकते हैं।
स्कॉट

4

आप निम्न आदेश द्वारा उदाहरण के लिए एक नई कुंजी जोड़ सकते हैं:

ssh-copy-id -i ~/.ssh/id_rsa.pub domain_alias

आप ~ / .shsh कॉन्फ़िगरेशन में domain_alias कॉन्फ़िगर कर सकते हैं

host domain_alias
  User ubuntu
  Hostname domain.com
  IdentityFile ~/.ssh/ec2.pem

4

मुझे कंसोल के माध्यम से एक नई कुंजी जोड़ी जोड़ने का एक आसान तरीका नहीं मिला, लेकिन आप इसे मैन्युअल रूप से कर सकते हैं।

मौजूदा कुंजी जोड़ी के साथ बस अपने EC2 बॉक्स में ssh। फिर ~ / .ssh / अधिकृत_की को संपादित करें और नई लाइन पर नई कुंजी जोड़ें। नई मशीन के माध्यम से बाहर निकलें और ssh। सफलता!


3

एक बार एक इंस्टेंस शुरू हो जाने के बाद, मेटा डेटा स्तर पर इंस्टेंस से जुड़ी कीपेयर को बदलने का कोई तरीका नहीं है, लेकिन आप उदाहरण के लिए कनेक्ट करने के लिए आप किस ssh कुंजी का उपयोग कर सकते हैं

stackoverflow.com/questions/7881469/change-key-pair-for-ec2-instance


3

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

  • EC2 से एक कुंजी-मूल्य जोड़ी बनाएँ -> कुंजी जोड़े (नेटवर्क और सुरक्षा टैब के तहत)
  • Elasticbeanstalk पर जाएं और अपने आवेदन पर क्लिक करें
  • कॉन्फ़िगरेशन पृष्ठ पर जाएं और सुरक्षा सेटिंग्स संशोधित करें
  • अपनी EC2 कुंजी जोड़ी चुनें और लागू करें पर क्लिक करें
  • अपडेट की पुष्टि करने के लिए पुष्टि पर क्लिक करें। यह पर्यावरण को समाप्त कर देगा और आपके पर्यावरण के लिए महत्वपूर्ण मूल्य लागू करेगा।

1

आप वास्तव में इलास्टिक बीनस्टॉक कॉन्फिगर पेज के माध्यम से एक महत्वपूर्ण जोड़ी जोड़ सकते हैं। यह तब आपके लिए और सब कुछ काम करता है आपके उदाहरण को पुनरारंभ करता है।

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