Mevcut EC2 yönetim ortamına Anahtar çifti ekleme


240

AWS Konsolu'na, çalışamadığım (üretim sırasında) 2 örneği çalışan bir hesaba erişim verildi. Ancak bu örneklere SSH erişimi elde etmek istiyorum, SSH yapabilmem için yeni bir Keypair oluşturmak ve örneklere uygulamak mümkün mü? Altında oluşturulan örneklerin anahtar çifti için mevcut pem dosyasını edinmek şu anda bir seçenek değildir.

Bu mümkün değilse, örneklere girebileceğim başka bir yol var mı?


Çözümü burada denediniz mi : stackoverflow.com/questions/1454629/… ? ssh-addİhtiyacınız olanı yapmalısınız.
Marc Bollinger

Ssh-add özelliğini öğrenmek güzel ama bu yardımcı olmaz çünkü bu kullanıcı aslında oluşturduğu anahtar çiftini kullanarak örneği oluşturdu. Bahsettiğim örnekler, erişimim olmayan başka bir anahtar çifti ile oluşturuldu.
Chris Wagner


4
Çalışan bir örneğe bir anahtar çifti uygulayamazsınız.
Rodney Quillo

Yanıtlar:


172

Çalışan bir örneğe bir anahtar çifti uygulayamazsınız. Yeni anahtar çiftini yalnızca yeni bir örnek başlatmak için kullanabilirsiniz.

Kurtarma için, bir EBS önyükleme AMI'sı ise, durdurabilir, birimin anlık görüntüsünü alabilirsiniz. Buna dayanarak yeni bir birim oluşturun. Eski örneği başlatmak, yeni bir görüntü oluşturmak veya verileri kurtarmak için tekrar kullanabilirsiniz.

Geçici depolamadaki veriler kaybolur.


Bu soru ve cevabın popülaritesi nedeniyle, Rodney'in yorumuna gönderdiği bağlantıdaki bilgileri yakalamak istedim.

Kredi gider Eric Hammond için bu bilgiler .

EC2 Örneğinin Kök EBS Birimindeki Dosyaları Düzeltme

Bir EC2 örneğinde kök EBS birimindeki dosyaları, aşağıdakiler gibi feci bir durum olarak görseniz bile inceleyebilir ve düzenleyebilirsiniz:

  • Ssh anahtarınızı kaybettiniz veya şifrenizi unuttunuz
  • / Etc / sudoers dosyasını düzenlerken bir hata yaptınız ve düzeltmek için sudo ile artık root erişimi alamıyorsunuz
  • Uzun süredir çalışan örneğiniz bir nedenle askıya alındı, iletişim kurulamıyor ve düzgün önyükleme yapamıyor
  • Dosyaları örnekten kurtarmanız gerekir, ancak dosyaya erişemezsiniz

Masanızda oturan fiziksel bir bilgisayarda, sistemi bir CD veya USB çubuğuyla önyükleyebilir, sabit sürücüyü monte edebilir, dosyaları kontrol edip düzeltebilir, ardından bilgisayarı yeniden işe başlamak için yeniden başlatabilirsiniz.

Ancak uzak bir EC2 örneği, bu durumlardan birindeyken uzak ve erişilemez görünür. Neyse ki, AWS, EBS önyükleme örneklerini çalıştırmamız ve örnek deposu değil, böyle bir sistemi kurtarabilmemiz için güç ve esneklik sağlar.

EC2'deki yaklaşım biraz fiziksel çözüme benziyor, ancak hatalı "sabit sürücüyü" (kök EBS birimi) farklı bir örneğe taşıyacak ve monte edeceğiz, düzelteceğiz, sonra geri taşıyacağız.

Bazı durumlarda, yeni bir EC2 örneği başlatmak ve kötü olanı atmak daha kolay olabilir, ancak dosyalarınızı gerçekten düzeltmek istiyorsanız, birçokları için işe yarayan yaklaşım şöyledir:

Kurmak

Görüntülemek ve düzenlemek istediğiniz dosyalarla birlikte bozuk kök EBS birimini içeren orijinal örneği (A) ve birimi belirleyin.

instance_a=i-XXXXXXXX

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

Orijinal EBS birimindeki dosyaları düzeltmek için kullanacağınız ikinci EC2 örneğini (B) tanımlayın. Bu örnek, EBS biriminin kendisine eklenebilmesi için A örneğiyle aynı kullanılabilirlik bölgesinde çalışıyor olmalıdır. Halihazırda çalışan bir örneğiniz yoksa geçici bir tane başlatın.

instance_b=i-YYYYYYYY

Bozuk A örneğini durdurun (tamamen durmasını bekleyin), kök EBS birimini örnekten ayırın (ayrılmasını bekleyin), ardından birimi kullanılmayan bir aygıtta B örneğine ekleyin.

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

ssh dosyasını B örneğine getirin ve birimi, dosya sistemine erişebilmeniz için bağlayın.

ssh ...instance b...

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

Düzelt

Bu noktada, A örneğindeki tüm kök dosya sisteminiz B örneğindeki / vol-a altında görüntülenebilir ve düzenlenebilir. Örneğin, aşağıdakileri yapmak isteyebilirsiniz:

  • /Vol-a/home/ubuntu/.ssh/authorized_keys içine doğru ssh anahtarlarını koyun
  • / Vol-a / etc / sudoers öğesini düzenleyin ve düzeltin
  • / Vol-a / var / log / syslog içindeki hata iletilerini arayın
  • / Vol-a /… 'dan önemli dosyaları kopyala

Not: İki örnekteki uids aynı olmayabilir, bu nedenle root olmayan kullanıcılara ait dosyalar oluştururken, düzenlerken veya kopyalarken dikkatli olun. Örneğin, A örneğindeki mysql kullanıcınız, B örneğindeki postfix kullanıcınızla aynı UID'ye sahip olabilir; bu da, bir ada sahip dosyaları seçip birimi A'ya taşırsanız sorunlara neden olabilir.

Sarmak

İşiniz bittikten ve / vol-a altındaki dosyalardan memnun kaldıktan sonra, dosya sistemini çıkarın (yine de örnek B'de):

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

Şimdi, ec2-api-tools ile sisteminize geri dönün, EBS birimini orijinal A örneğindeki yerine geri taşımaya devam edin ve örneği tekrar başlatın:

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

Umarım, sorunu çözdünüz, A örneği gayet iyi gelir ve başlangıçta yapmak istediklerinizi başarabilirsiniz. Değilse, çalışana kadar bu adımları tekrarlamaya devam etmeniz gerekebilir.

Not: Durdurduğunuzda A örneğine atanmış bir Elastik IP adresiniz varsa, yeniden başlattıktan sonra yeniden ilişkilendirmeniz gerekir.

Hatırlamak! B örneğiniz yalnızca bu işlem için geçici olarak başlatıldıysa, şimdi sonlandırmayı unutmayın.


bunun için adım adım yol gösteren bir rehber söyleyebilir misiniz (veya işaret edin). Benim durumumda, çalışan bir eşgörünüm var ve özel anahtarın olmadığı uzak bir konumdan oturum açmam gerekiyor.
Jus12

87

Çalışan bir EC2 örneğine doğrudan bir anahtar çifti ekleyemeseniz de, bir linux kullanıcısı oluşturabilir ve onun için yeni bir anahtar çifti oluşturabilir, ardından orijinal kullanıcının anahtar çiftinde olduğu gibi kullanabilirsiniz.

Sizin durumunuzda, örnek sahibinden (bunu oluşturan) aşağıdakileri yapmasını isteyebilirsiniz. Böylece, örnek sahibinin kendi anahtarlarını sizinle paylaşması gerekmez, ancak yine de bu örneklere ssh edebileceksiniz. Bu adımlar ilk olarak Utkarsh Sengar (aka. @Zengr ) tarafından http://utkarshsengar.com/2011/01/manage-multiple-accounts-on-1-amazon-ec2-instance/ adresinde yayınlanmıştır . Sadece birkaç küçük değişiklik yaptım.

  1. 1.Adım: Varsayılan “Ubuntu” kullanıcısı ile giriş yapın :

    $ ssh -i my_orig_key.pem ubuntu@111.111.11.111
    
  2. 2.Adım: Yeni bir kullanıcı oluşturun, yeni kullanıcımıza "john" adını vereceğiz :

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

    “John” için parola belirleyin:

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

    Sudoer listesine "john" u ekle:

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

    .. ve dosyanın sonuna aşağıdakileri ekleyin:

    john   ALL = (ALL)    ALL
    

    Peki! Yeni kullanıcımızı oluşturduk, şimdi 1. adımda my_orin_key.pem'e sahip olduğumuz gibi giriş yapmak için gerekli olan anahtar dosyasını oluşturmanız gerekiyor.

    Şimdi çıkın ve kökünden ubuntu'ya geri dönün.

    [root@ip-11-111-111-111 ubuntu]# exit
    [ubuntu@ip-11-111-111-111 ~]$
    
  3. 3.Adım: Ortak ve özel anahtarları oluşturma :

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

    Adım 2'de “john” için oluşturduğunuz şifreyi girin. Ardından bir anahtar çifti oluşturun. Anahtar çifti için parolanın en az 4 karakter olması gerektiğini unutmayın.

    [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
    

    Yukarıdaki adımda john yarattığımız kullanıcı ve ubuntu varsayılan kullanıcı grubudur.

    [john@ip-11-111-111-111 ~]$ sudo chown john:ubuntu .ssh/authorized_keys
    
  4. Adım 4: Şimdi “John” adlı anahtarı indirmeniz gerekiyor . EC2'den dosya indirmek / yüklemek için scp kullanıyorum, işte nasıl yapabilirsiniz.

    Yine de ubuntu kullanıcısını kullanarak dosyayı kopyalamanız gerekecektir , çünkü yalnızca o kullanıcı adı için anahtarınız vardır. Bu nedenle, anahtarı ubuntu klasörüne taşımanız ve 777'ye chmod etmeniz gerekir.

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

    Şimdi my_orig_key.pem dosyanızın bulunduğu yerel makinenin terminaline gelin ve bunu yapın:

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

    Yukarıdaki komut “john” anahtarını yerel makinenizdeki mevcut çalışma dizinine kopyalar. Anahtarı yerel makinenize kopyaladıktan sonra, özel bir anahtar olduğu için “/ home / ubuntu / john” silmeniz gerekir.

    Şimdi, bir yerel makine john john 600 chmod.

    $ chmod 600 john
    
  5. 5.Adım: Anahtarınızı test etme zamanı :

    $ ssh -i john john@111.111.11.111
    

Böylece, bu şekilde, birden fazla kullanıcıyı bir EC2 örneği kullanacak şekilde ayarlayabilirsiniz !!


4
Bu yararlıdır, ancak son adım olarak uzak makinedeki özel anahtarı da silmemelisiniz? Bu şekilde örneğe erişimi olan diğer kullanıcılar da kopyalayamaz ve oturum açmak için anahtarınızı kullanamaz.
culix

Bu benim için çalışıyor. Ama üzerinde çalışacağım dosyalar ubuntu kullanıcı dizininde olduğundan ubuntu kullanıcısına buradan nasıl gidebilirim. Bu beni john kullanıcı grubuna götürecek. Ubuntu 14.04.4 LTS
olyjosh

Bu benim için işe yaramadı. Geçersiz izinler verdi. Ec2 konsolundan anahtar çifti oluşturmak zorunda kaldım, sonra çalışmaya başladı
dark knight

11

Yerel makinenizde şu komutu çalıştırın:

ssh-keygen -t rsa -C "SomeAlias"

Bu komut çalıştıktan sonra, * .pub ile biten bir dosya oluşturulur. Dosyanın içeriğini kopyalayın.

Amazon makinesinde ~ / .ssh / yetkili_anahtarlarını düzenleyin ve * .pub dosyasının içeriğini yapıştırın (ve önce mevcut tüm içeriği kaldırın).

Daha sonra SSH'yi ssh-keygen komutundan (özel anahtar) oluşturulan diğer dosyayı kullanarak yapabilirsiniz.


@Dan'ın belirttiği gibi, bu dosyayı düzenleyen örneğinize erişimi değiştirmek mümkündür, ancak örnekle ilişkili anahtar çiftini hiçbir zaman meta veri düzeyinde değiştiremezsiniz. Genelinizin sonuna .pem dosya adını eklemeyi unutmayın Anahtar, örneğin:ssh-rsa AAAAB3NzaC1yc2EA...DsGt66 my-key-pair
Ricardo Mutti

7

Bu daha önce başıma geldi (bir başkasının oluşturduğu ancak AWS web konsoluna erişimi olan bir EC2 örneğine erişimi yoktu) ve yanıtı bloke ettim: http://readystate4.com/2013/04/09/aws-gaining- ssh-erişim-to-an-EC2-örneği-sen-lost-erişimini yapılır /

Temel olarak, EBS sürücüsünü çıkarabilir, erişiminiz olan bir EC2'ye takabilirsiniz. SSH pub anahtarınızı ~ec2-user/.ssh/authorized_keysbu takılı sürücüye ekleyin . Sonra eski EC2 örneğine geri koyun. Amazon AMI kullanarak bağlantıda adım adım ilerleyin.

Anlık görüntü oluşturmaya veya yeni bir klonlanmış örnek oluşturmaya gerek yok.


6

Benim durumumda bu belgeyi bir anahtar çifti Elastik Beanstalk örneğim ile ilişkilendirmek için kullandım

Önemli

Bir Amazon EC2 anahtar çifti oluşturmalı ve Elastik Beanstalk tarafından sağlanan Amazon EC2 örneklerinizi, Elastik Beanstalk tarafından sağlanan Amazon EC2 örneklerine erişmeden önce Amazon EC2 anahtar çiftini kullanacak şekilde yapılandırmalısınız. Amazon EC2 anahtar çiftlerinizi AWS Yönetim Konsolu'nu kullanarak ayarlayabilirsiniz. Amazon EC2 için bir anahtar çifti oluşturmayla ilgili talimatlar için bkz. Amazon Elastik Bilişim Bulutu Başlangıç ​​Kılavuzu.

Amazon EC2 Sunucu Örneklerini Elastik Beanstalk ile Yapılandırma


1
Teşekkürler, @ kamal-essajidi! EB kullanan diğer kullanıcılar için: bir anahtar çiftiniz olduğunda, bunu Yapılandırma> Örnekler> EC2 anahtar çiftinden Elastik Fasulye sapınıza ekleyebilirsiniz.
Scott

4

Aşağıdaki komutla örneğe yeni bir anahtar ekleyebilirsiniz:

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

Domain_alias'ı ~ / .ssh config içinde yapılandırabilirsiniz

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

4

Konsol aracılığıyla yeni bir anahtar çifti eklemenin kolay bir yolunu bulamadım, ancak manuel olarak yapabilirsiniz.

Sadece mevcut anahtar çifti ile EC2 kutunuza ssh. Ardından ~ / .ssh / yetkili_anahtarlarını düzenleyin ve yeni anahtarı yeni bir satıra ekleyin. Yeni makine ile çıkış ve ssh. Başarı!



3

Flexiblebeanstalk ortamları için, çalışan bir örneğe aşağıdaki gibi bir anahtar / değer çifti uygulayabilirsiniz:

  • EC2 -> Anahtar Çiftleri'nden bir anahtar / değer çifti oluşturun (AĞ ve GÜVENLİK sekmesi altında)
  • Flexiblebeanstalk'a gidin ve uygulamanızı tıklayın
  • Yapılandırma sayfasına gidin ve güvenlik ayarlarını değiştirin
  • EC2 anahtar çiftinizi seçin ve Uygula'yı tıklayın
  • Güncellemeyi onaylamak için onayla'yı tıklayın. Çevreyi sonlandıracak ve anahtar değeri ortamınıza uygulayacaktır.

1

Elastik fasulye sapı yapılandırma sayfasından bir anahtar çifti ekleyebilirsiniz. daha sonra örneğinizi sizin için yeniden başlatır ve her şey çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.