Zmień parę kluczy dla instancji ec2

408

Jak zmienić parę kluczy dla mojej instancji ec2 w konsoli zarządzania AWS? Mogę zatrzymać instancję, mogę utworzyć nową parę kluczy, ale nie widzę żadnego łącza do modyfikacji pary kluczy instancji.

Michael Chen
źródło
1
Wykonałem kroki wskazane w tym filmie i zadziałało youtube.com/watch?v=OF2AOekW4IE
Jonathan Nolasco Barrientos

Odpowiedzi:

491

Ta odpowiedź jest przydatna w przypadku, gdy nie masz już dostępu SSH do istniejącego serwera (tj. Utraciłeś swój klucz prywatny).

Jeśli nadal masz dostęp do SSH, skorzystaj z jednej z poniższych odpowiedzi.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

Oto co zrobiłem dzięki postowi na blogu Erica Hammonda:

  1. Zatrzymaj działającą instancję EC2
  2. Odłącz jego /dev/xvda1objętość (nazwijmy to tomem A) - patrz tutaj
  3. Uruchom nową instancję t1.micro EC2, używając mojej nowej pary kluczy. Upewnij się, że utworzyłeś go w tej samej podsieci , w przeciwnym razie będziesz musiał zakończyć instancję i utworzyć ją ponownie. - patrz tutaj
  4. Dołącz wolumin A do nowej mikro instancji jako /dev/xvdf(lub /dev/sdf)
  5. SSH do nowej mikro instancji i podłącz wolumin A do /mnt/tmp

    $ sudo mount / dev / xvdf1 / mnt / tmp

  6. Skopiuj ~/.ssh/authorized_keysdo/mnt/tmp/home/ubuntu/.ssh/authorized_keys

  7. Wyloguj
  8. Zakończ mikro wystąpienie
  9. Odłącz od niego objętość A.
  10. Dołącz wolumin A z powrotem do głównej instancji jako /dev/xvda
  11. Uruchom główną instancję
  12. Zaloguj się jak poprzednio, używając nowego .pempliku

Otóż ​​to.

yegor256
źródło
6
właśnie uratowałem mój tyłek, jesteś legendą!
Garry Welding
8
mkdir /mnt/tmpi wtedy mount /dev/xvdf /mnt/tmppowinien zrobić lewę dla # 5. I nie zapominaj, że krok 13. prawdopodobnie dotyczy urządzeń, rm ~/.ssh/known_hostsz którymi się łączysz.
brandonscript
21
To takie śmierdzące… Po pierwsze, zobacz odpowiedź Erica Hammonda poniżej. Po drugie: odpowiedź Pat Mcb. Wykonują właściwie to samo, ale nie marnują 1h twojego czasu na zabawne obejście. PS. Zobacz także stackoverflow.com/a/24143976/547223
kgadek
3
Napisałem tutaj bardzo szczegółowe instrukcje, które opierają się na tej odpowiedzi, ale zasadniczo jest to ten sam pomysł - gist.github.com/tamoyal/1b7ec4d3871b343d353d . Jak zauważył @kgadek, jest trochę brudny i czasochłonny, ale jest to świetna opcja, jeśli jesteś zablokowany na serwerze, chcesz zmienić klucz i jeśli nie chcesz rozpakować kopii tego serwera. To zajmuje około 5-10 minut na instancję, a nie godzinę.
Tony
4
Odpowiedzi opublikowane przez @Eric i @Pat to rozwiązania dla osób, które chcą po prostu użyć innej pary kluczy dla swoich instancji. Nie pomaga to użytkownikowi, który w jakiś sposób stracił plik pary kluczy. Bez odłączania woluminu i dołączania go do innej instancji, w jaki sposób można uzyskać kontrolę nad tym woluminem? Nie mówiąc już o zastąpieniu oryginalnego .ssh/authorized_keyspliku.
sanjeev
187

Po uruchomieniu instancji nie ma możliwości zmiany pary kluczy powiązanych z instancją na poziomie metadanych, ale można zmienić klucz ssh używany do łączenia się z instancją.

W przypadku większości interfejsów AMI jest proces uruchamiania, który pobiera publiczny klucz ssh i instaluje go w pliku .ssh / Author_keys, dzięki czemu można ssh jako użytkownik przy użyciu odpowiedniego prywatnego klucza ssh.

Jeśli chcesz zmienić klucz ssh, którego używasz do uzyskania dostępu do instancji, zechcesz edytować plik autoryzowany_ kluczy w samej instancji i przekonwertować na nowy klucz publiczny ssh.

Plik autoryzowanych_kluczy znajduje się w podkatalogu .ssh w katalogu osobistym zalogowanego użytkownika. W zależności od uruchomionego interfejsu AMI może on znajdować się w jednym z:

/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys

Po edycji pliku autoryzowanych_kluczy zawsze używaj innego terminala, aby potwierdzić, że możesz ssh zalogować się do instancji, zanim rozłączysz się z sesją do edycji pliku. Nie chcesz popełnić błędu i całkowicie zamknąć się z instancją.

Podczas gdy myślisz o parach kluczy ssh na EC2, zalecam przesłanie własnego osobistego klucza publicznego ssh do EC2 zamiast zlecania Amazon wygenerowania pary kluczy dla ciebie.

Oto artykuł, który o tym napisałem:

Przesyłanie osobistych kluczy ssh do Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

Dotyczy to tylko nowych uruchomionych instancji.

Eric Hammond
źródło
Głupio popełniłem ten błąd, mam na myśli edycję pliku autoryzowanego_kluczy i wylogowałem się. Teraz nie mogę
odesłać::
11
aatifh: Oto artykuł, w którym napisałem, jak wyjść z tej sytuacji: alestic.com/2011/02/ec2-fix-ebs-root
Eric Hammond
@EricHammond To może być nie na miejscu, ale wydaje się, że wiesz, jak to wszystko działa ... Skonfigurowałem dzisiaj instancję EC2 i otrzymałem .pemplik klucza prywatnego na moim komputerze Mac, jednak ssh -i key.pemnie jest on uwierzytelniany (odmowa dostępu (publickey)). W konsoli zarządzania EC2 w obszarze Nazwa pary kluczy nic nie wyświetla. To mnie niepokoi. Jak mogę to ustawić? Wygląda na to, że w oparciu o konsolę zarządzania do skonfigurowanej instancji nie przypisano żadnych skonfigurowanych przeze mnie par kluczy!
Steven Lu
1
@StevenLu: Tak, wątki komentarzy są niewłaściwym miejscem do zadawania nowych pytań. Spróbuj utworzyć nowe pytanie na serverfault.com (bardziej odpowiednie dla tego problemu niż stackoverflow).
Eric Hammond,
4
Oto ładna, mała linijka do dodawania klucza. To dodaje zwykły klucz do pubu oprócz klucza wygenerowanego przez AWS, więc jeśli to nie zadziała, nie zablokujesz się: stackoverflow.com/a/5654728/193494
Kevin C.
78

Uruchom to polecenie po pobraniu pem AWS.

ssh-keygen -f YOURKEY.pem -y

Następnie zrzuć dane wyjściowe do authorized_keys.

Lub skopiuj plik pem do instancji AWS i wykonaj następujące polecenia

chmod 600 YOURKEY.pem

i wtedy

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys
Pat Mcb
źródło
14
Działa to tylko wtedy, gdy masz już dostęp do systemu, prawda? (jak nie stracił stary plik .pem).
Daniel
5
Możesz użyć> zamiast >>, aby zastąpić bieżącego użytkownika zamiast go dodać.
Adrian Lopez
To jest poprawna i najprostsza odpowiedź. Nie ma potrzeby ponownego uruchamiania, tworzenia nowych instancji ani montowania dysków. Po prostu pobierz .pem, keygen i dodaj go do uprawnionych hostów.
Spanky
Zrobiłem to ssh-keygen -f YOURKEY.pem -y >> ~ / .ssh / Author_keys, ale sitll nie może uzyskać dostępu do mojego ec2 za pomocą nowego klucza publicznego.
manukyanv07
Uruchomiłem to i mój lokalny klucz się nie zmienił.
Luiz
50

Instrukcja obsługi AWS EC2:

  1. Zmień login pem
  2. przejdź do konsoli EC2
  3. W sekcji SIEĆ I BEZPIECZEŃSTWO kliknij Para kluczy Kliknij Utwórz parę kluczy
  4. Nadaj nazwę nowej parze kluczy, zapisz plik .pem. Nazwa pary kluczy zostanie użyta do połączenia z instancją
  5. Utwórz połączenie SSH z instancją i pozostaw je otwarte
  6. w PuttyGen kliknij „Załaduj”, aby załadować plik .pem
  7. Zaznacz pole wyboru SSH-2 RSA. Kliknij „Zapisz klucz prywatny”. Pojawi się okno wyskakujące z ostrzeżeniem, kliknij „Tak”
  8. kliknij również „Zapisz klucz publiczny”, aby wygenerować klucz publiczny. To jest klucz publiczny, który skopiujemy do twojej bieżącej instancji
  9. Zapisz klucz publiczny z nową nazwą pary kluczy i rozszerzeniem .pub
  10. Otwórz zawartość klucza publicznego w notatniku
  11. skopiuj treść poniżej „Komentarz:„ Zaimportowany-openssh-key ”i przed„ ---- ZAKOŃCZ KLUCZ PUBLICZNY SSH2 ----
    Uwaga - musisz skopiować treść jako jedną linię - usuń wszystkie nowe linie
  12. w podłączonej instancji otwórz plik autoryzowanych_kluczy za pomocą narzędzia vi. Uruchom następującą komendę: vi .ssh / author_keys, powinieneś również zobaczyć oryginalny klucz publiczny w pliku
  13. przesuń kursor na plik na koniec pierwszej zawartości klucza publicznego: wpisz „i”, aby wstawić
  14. w nowym wierszu wpisz „ssh-rsa” i dodaj spację przed wklejeniem zawartości klucza publicznego, spacji i nazwy pliku .pem (bez .pem) Uwaga - powinieneś otrzymać linię z taki sam format jak poprzednia linia
  15. naciśnij klawisz Esc, a następnie wpisz: wq!

spowoduje to zapisanie zaktualizowanego pliku uprawnione klucze

teraz spróbuj otworzyć nową sesję SSH dla swojego wystąpienia przy użyciu nowego klucza pai

Po potwierdzeniu, że możesz połączyć się z instancją przy użyciu nowej pary kluczy, możesz vi .ssh / autoryzowany_klucz i usunąć stary klucz.

Odpowiedź na uwagę Shaggie:

Jeśli nie możesz połączyć się z instancją (np. Klucz jest uszkodzony), użyj konsoli AWS, aby odłączyć wolumin ( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html ) i podłącz go ponownie do działającej instancji, a następnie zmień klucz na woluminie i podłącz go z powrotem do poprzedniej instancji.

Elia Weiss
źródło
6
Powinna być najlepsza odpowiedź
2
Co się stanie, jeśli stary klucz ulegnie uszkodzeniu i nie będzie można połączyć się z instancją za pomocą putty, ponieważ nie masz starego pliku ppk?
Shaggie,
3
co jeśli nie masz dostępu do SSH, stąd ten problem.
Jayden Lawson,
3
Jayden Lawson, co jeśli nie masz połączenia z Internetem?
Elia Weiss,
1
Może się zdarzyć, że para kluczy zostanie udostępniona innej osobie, a teraz będzie musiała zmienić pary kluczy, aby osoba ta nie mogła się już zalogować, Lub wiele innych podobnych powodów,
Harikrishna
38

Zauważyłem, że gdy zarządza Elastic Beanstalk, to może zmienić aktywną parę kluczy EC2. W obszarze Elastic Beanstalk> Konfiguracja> Bezpieczeństwo wybierz nowy klucz z listy rozwijanej pary kluczy EC2 . Zobaczysz tę wiadomość z pytaniem, czy masz pewność:

EC2KeyName: zmiany w ustawieniach EC2KeyName nie zaczną obowiązywać natychmiast. Każda z istniejących instancji EC2 zostanie zastąpiona, a nowe ustawienia zaczną obowiązywać.

Moja instancja została już zakończona, kiedy to zrobiłem. Następnie zaczął, zakończył i zaczął od nowa. Najwyraźniej „zastąpienie” oznacza zakończenie i utworzenie nowej instancji. Jeśli zmodyfikowałeś wolumin rozruchowy, najpierw utwórz AMI, a następnie określ ten AMI w tym samym formularzu Elastic Beanstalk> Konfiguracja> Instancje jako niestandardowy identyfikator AMI . Ostrzega również o zamianie instancji EC2.

Po zmodyfikowaniu pary kluczy EC2 i niestandardowego identyfikatora AMI oraz wyświetleniu ostrzeżeń o obu z nich kliknij Zapisz, aby kontynuować.

Pamiętaj, że adres IP zmienia się po ponownym utworzeniu instancji, dlatego musisz pobrać nowy adres IP z konsoli EC2, aby użyć go podczas łączenia przez SSH.

Mark Berry
źródło
1
Jest to teraz w sekcji „Bezpieczeństwo” konfiguracji.
Will Demaine
Dzięki @WillDemaine. Obecnie nie korzystam z AWS, więc uwierzę ci na słowo i zatwierdzę zmianę!
Mark Berry
31

Przeszedłem przez to podejście i po pewnym czasie udało mi się sprawić, by działało. Brak rzeczywistych poleceń sprawił, że było to trudne, ale wymyśliłem to. JEDNAK - znacznie łatwiejsze podejście zostało znalezione i przetestowane wkrótce po:

  1. Zapisz swoją instancję jako AMI (uruchom ponownie lub nie, sugeruję ponowne uruchomienie). Działa to tylko wtedy, gdy wspierany jest EBS.
  2. Następnie po prostu uruchom instancję z tego interfejsu AMI i przypisz nowy plik klucza.
  3. Przenieś swój elastyczny adres IP (jeśli dotyczy) do nowej instancji i gotowe.
OldGreg
źródło
To całkowicie zadziałało dla mnie po tym, jak przypadkowo
usunąłem
Zrobiłem to samo i zadziałało, teraz mogę zalogować się przy użyciu nowego pem. Ale nadal mogę zalogować się przy użyciu starego pem. Więc teraz 2 pems są ważne.
Witalij
Do Twojej wiadomości jest to szybka, prosta metoda GUI rozpędzania nowego EC2 z innym kluczem, jeśli jest zajęty, ale ponieważ @vitaly stwierdził, że masz również stary klucz pem, musisz przejść do /home/ec2-user/.ssh/authorized_keys i usunąć stary klucz pem z pliku. Dzięki za szybką i szybką metodę zmiany klucza Pem, kiedy nie mam czasu.
Blu Towers
To nie działało dla mnie. AWS ciągle powtarzał, że hasło jest niedostępne z innym komunikatem, w którym wspomniano, że jeśli instancja została utworzona z AMI, wykorzystuje ona poświadczenia obrazu nadrzędnego.
Brady
15

Wykonanie poniższych kroków pozwoli zaoszczędzić dużo czasu i nie będzie potrzeby zatrzymywania działającej instancji.

  1. Uruchom nową instancję t1.micro EC2, używając nowej pary kluczy. Upewnij się, że utworzyłeś go w tej samej podsieci , w przeciwnym razie będziesz musiał zakończyć instancję i utworzyć ją ponownie.
  2. SSH do nowej mikro instancji i skopiuj zawartość ~ / .ssh / uprawnionych_kluczy gdzieś na komputerze.
  3. Zaloguj się do głównej instancji za pomocą starego klucza ssh .
  4. Skopiuj i zamień zawartość pliku z punktu 2 na ~ / .ssh / autoryzowane_klucze
  5. Teraz możesz zalogować się ponownie tylko przy użyciu nowego klucza. Stary klucz już nie będzie działać.

To jest to. Ciesz się :)

vinay saini
źródło
14

Uważam, że najprostszym podejściem jest:

  1. Utwórz obraz AMI istniejącej instancji.
  2. Uruchom nową instancję EC2 przy użyciu obrazu AMI (utworzonego w kroku 1) z nową parą kluczy.
  3. Zaloguj się do nowej instancji EC2 przy użyciu nowego klucza.
Siergiej
źródło
@Brady, co w ogóle nie działa? robić migawkę? uruchomienie instancji? Zaloguj sie?
Siergiej
4
Nie jestem pewien, czy ta zmiana jest ostatnia, czy nie, ale kiedy tworzysz AMI z instancji, która ma już przypisany klucz, musisz mieć ten klucz dostępny, aby zalogować się do skopiowanego obrazu AMI, niezależnie od tego, czy podczas tworzenia przypisujesz inną parę kluczy.
Brady
To nie jest rozwiązanie, ponieważ @Brady wspomina, że ​​nie działa.
Greg Sansom,
8

Jeśli korzystasz z platformy ElasticBeanstalk, możesz zmienić klucze, przechodząc:

  • Elastyczny panel Beanstalk
  • Konfiguracja
  • Instancje (tryb prawy w prawym górnym rogu)
  • Para kluczy EC2

Spowoduje to zakończenie bieżącej instancji i utworzenie nowej z wybranymi kluczami / ustawieniami.

Vaelyr
źródło
2
To jest najprostsza odpowiedź tutaj, pod warunkiem, że korzystasz z ElasticBeanstalk.
Yuval Karmi
2
Ostrzeżenie ! To niebezpieczne rozwiązanie. AWS zresetuje również pamięć (tj. Wirtualny dysk twardy) podłączoną do tego wystąpienia (!!). Musisz więc odłączyć pamięć masową, a po podniesieniu nowej instancji podłącz ją ponownie zamiast nowej, która została dostarczona z nową instancją. Oczywiście najlepiej będzie, jeśli nie jest to zaszyfrowany wolumin (i nie zgubiłeś klucza ...)
JamesC
7

W tym pytaniu zadawane są dwa scenariusze: -

1) Nie masz dostępu do pliku .pem , dlatego chcesz utworzyć nowy.

2) Masz. dostęp do pliku pem z tobą, ale po prostu chcesz zmienić lub utworzyć nowy plik .em dla pewnych słabych punktów lub ze względów bezpieczeństwa .

Więc jeśli zgubiłeś klucze, możesz przewinąć w górę i zobaczyć inne odpowiedzi . Ale jeśli po prostu zmienisz plik .pem ze względów bezpieczeństwa, wykonaj następujące czynności: -

1) Przejdź do logowania do konsoli AWS i utwórz nowy plik .pem z sekcji par kluczy tam. Automatycznie pobierze plik .pem na komputer

2) zmień uprawnienia na 400, jeśli używasz Linux / ubuntu, naciśnij poniższe polecenie

chmod 400 yournewfile.pem

3) Wygeneruj RSA nowo pobranego pliku na komputerze lokalnym

ssh-keygen -f yournewfile.pem -y

4) Skopiuj stąd kod RSA

5) Teraz SSH do twojej instancji poprzez poprzedni plik .pem

ssh -i oldpemfileName.pem username@ipaddress

sudo vim  ~/.ssh/authorized_keys

6) Daj miejsce na dwa wiersze i wklej tutaj skopiowany RSA nowego pliku, a następnie zapisz plik

7) Teraz nowy plik .pem jest połączony z działającą instancją

8) Jeśli chcesz wyłączyć poprzedni dostęp do pliku .pem, po prostu edytuj

sudo vim ~/.ssh/authorized_keys

plik i usuń lub zmień poprzedni RSA stąd.

Uwaga: - Usuń ostrożnie, aby nowo utworzone RSA nie zostało zmienione.

W ten sposób możesz zmienić / połączyć nowy plik .pem z działającą instancją.

Możesz odwołać dostęp do wcześniej wygenerowanego pliku .pem ze względów bezpieczeństwa.

Mam nadzieję, że to pomoże!

Parveen yadav
źródło
2
Podoba mi się to rozwiązanie, ponieważ nie wymaga ode mnie utworzenia nowego wystąpienia z zamrożonym obrazem AMI. Ale czy ta metoda jest w stanie zmienić powiązaną nazwę klucza nazwy instancji EC2 na pulpicie nawigacyjnym EC2? @Parveen yadav
uzależniony
6

Najprostszym rozwiązaniem jest skopiowanie zawartości

~/.ssh/id_rsa.pub

w uprawnione klucze twojej instancji AWS pod adresem

~/.ssh/authorized_keys

Umożliwi to ssh do instancji EC2 bez określania pliku pem dla komendy ssh. Możesz usunąć wszystkie pozostałe klucze po przetestowaniu połączenia z nim.

Jeśli musisz utworzyć nowy klucz, aby udostępnić go komuś innemu, możesz to zrobić za pomocą:

ssh-keygen -t rsa

który utworzy plik private key.pem, a klucz publiczny można uzyskać za pomocą:

ssh-keygen -f private_key.pem -y > public_key.pub

Każdy, kto ma private_key.pem, będzie mógł się połączyć

ssh [email protected] -i private_key.pem
kichać
źródło
4
jak mogę uzyskać dostęp, ~/.ssh/authorized_keysgdy nie mogę nawet wystąpienia aws SSH?
prayagupd,
3
Uważam, że twój ostatni wiersz jest niepoprawny, będziesz mógł połączyć się tylko wtedy, gdy będziesz mieć klucz prywatny. Ssh -i private_key.pem uż[email protected]. Jeśli chcesz, aby ktoś dał ci dostęp do jego instancji, możesz bezpiecznie udostępnić im swój klucz publiczny, a on może dodać go do swoich kluczy autoryzowanych, aby udzielić Ci dostępu do instancji jako ten użytkownik ...
code4cause
5

Nie musisz obracać urządzenia głównego i zmieniać klucza publicznego SSH authorized_keys. W tym celu można użyć danych użytkownika, aby dodać klucze ssh do dowolnej instancji. Po pierwsze musisz utworzyć nową KeyPair za pomocą konsoli AWS lub poprzez ssh-keygen.

ssh-keygen -f YOURKEY.pem -y

Spowoduje to wygenerowanie klucza publicznego dla nowej pary kluczy SSH, skopiowanie tego klucza publicznego i użycie go w skrypcie poniżej.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//

Po ponownym uruchomieniu komputer będzie miał określony klucz publikowania SSH. Usuń dane użytkownika po pierwszym uruchomieniu. Przeczytaj więcej o danych użytkownika podczas uruchamiania .

Hardeep Singh
źródło
4
  • Utwórz nowy klucz, np. Za pomocą generatora kluczy PuTTY
  • Zatrzymaj instancję
  • Ustaw dane użytkownika instancji, aby wypychały klucz publiczny na serwer
  • Uruchom instancję

Ostrzeżenie: nie zapomnij ponownie wyczyścić danych użytkownika. W przeciwnym razie ten klucz będzie wypychany przy każdym uruchomieniu instancji. Instrukcje krok po kroku .

#cloud-config
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys

wprowadź opis zdjęcia tutaj

Reto Höhener
źródło
1
Jest to oficjalny sposób na wykonanie tego przez AWS, więc proponuję @reto. aws.amazon.com/premiumsupport/knowledge-center/…
Bevan
3

Próbowałem poniżej kroków i działało bez zatrzymywania instancji. Moim wymaganiem było - ponieważ zmieniłem komputer kliencki, stary plik .pem nie pozwalał mi zalogować się do instancji ec2.

  1. Zaloguj się do instancji ec2 przy użyciu starego pliku .pem ze starego komputera. Otwórz ~ / .ssh / Author_keys

W tym pliku zobaczysz swoje stare klucze.

  1. ssh-keygen -f YOUR_PEM_FILE.pem -y Wygeneruje klucz. Dołącz klucz do ~ / .ssh / uprawnionych_kluczy otwartych w kroku # 1. Nie trzeba usuwać starego klucza.

  2. Z konsoli AWS utwórz nową parę kluczy. Przechowuj w nowej maszynie. Zmień nazwę na stary plik pem - przyczyną jest to, że stary plik pem jest nadal powiązany z instancją ec2 w AWS.

Wszystko gotowe.

Jestem w stanie zalogować się do AWS ec2 z mojego nowego komputera klienckiego.

Pan Bordoloi
źródło
3

Masz kilka opcji, aby zastąpić klucz instancji EC2.

  1. Możesz zastąpić klucz ręcznie w pliku .ssh / Author_keys. Jednak wymaga to faktycznego dostępu do instancji lub woluminu, jeśli nie jest on zaszyfrowany.
  2. Możesz użyć Menedżera systemów AWS. Wymaga to zainstalowania agenta.

Ponieważ pierwszą opcję można łatwo znaleźć w odpowiedziach lub w wybranej wyszukiwarce, chcę skupić się na menedżerze systemów.

  1. Otwórz usługę Systems Manager
  2. Kliknij po Automationlewej stronie.
  3. Kliknij Execute Automation
  4. Wybierz AWSSupport-TroubleshootSSH(zwykle jest na ostatniej stronie)

Więcej informacji można znaleźć w oficjalnej dokumentacji AWS

Hendric
źródło
1

Odpowiedź Yegor256 zadziałała dla mnie, ale pomyślałem, że dodam kilka komentarzy, aby pomóc tym, którzy nie są tak dobrzy w montowaniu napędów (jak ja!):

Amazon daje ci wybór tego, co chcesz nazwać woluminem po dołączeniu. Używasz nazwy z zakresu od / dev / sda - / dev / sdp. Nowsze wersje Ubuntu zmienią następnie nazwę tego, co tam umieścisz, na / dev / xvd (x) lub coś w tym celu.

Więc dla mnie wybrałem / dev / sdp jako nazwę nazwy montowania w AWS, następnie zalogowałem się na serwerze i odkryłem, że Ubuntu zmieniło nazwę mojego woluminu na / dev / xvdp1). Następnie musiałem zamontować dysk - dla mnie musiałem to zrobić w następujący sposób:

mount -t ext4 xvdp1 /mnt/tmp

Po przejściu przez te wszystkie obręcze mogłem uzyskać dostęp do moich plików na / mnt / tmp

Ryan
źródło
jako komentarz należy dodać jako komentarz, a nie odpowiedź.
JDL
0

Działa to tylko wtedy, gdy masz dostęp do instancji, w której chcesz zmienić / dodać klucz. Możesz utworzyć nową parę kluczy. Lub jeśli masz już parę kluczy, możesz wkleić klucz publiczny nowej pary do pliku uprawnionego z kluczy.

vim .ssh / uprawnione_klucze

Teraz możesz użyć klucza prywatnego dla tej pary i zalogować się.

Mam nadzieję że to pomoże.

skd
źródło
0

Mój problem polegał na tym, że próbowałem IPraczej niż publicznie DNS. Potem spróbowałem public DNSi jego rozwiązanie

vipin cp
źródło
0

jeśli nie możesz się zalogować na maszynie wirtualnej i usunąłeś klucze ssh, a także możesz zmienić parę kluczy ec2, wykonując poniższe kroki. Idź krok po kroku 1) zatrzymaj instancję ec2. 2) zrób migawkę maszyny wirtualnej i pamięci. 3) utwórz nową maszynę wirtualną podczas jej tworzenia, wybierz migawkę i utwórz maszynę wirtualną z migawki. 4) podczas tworzenia maszyny wirtualnej pobiera parę kluczy. 5) po VM UP możesz ssh z nową parą kluczy, a dane również zostaną przywrócone.

Raghunath Babalsure
źródło
0

Co możesz zrobić...

  1. Utwórz nowy profil instancji / rolę, do której dołączono zasady AmazonEC2RoleForSSM.

  2. Dołącz ten profil wystąpienia do wystąpienia.

  3. Użyj Menedżera sesji SSM, aby zalogować się do instancji.
  4. Użyj keygen na komputerze lokalnym, aby utworzyć parę kluczy.
  5. Wepchnij publiczną część tego klucza do instancji za pomocą sesji SSM.
  6. Zysk.
Belial
źródło
0

Dzięki za wskazówki chłopaki. Na pewno będę o nich pamiętać, gdy będę musiał odpocząć od kluczowych par. Jednak w interesie wydajności i lenistwa wymyśliłem coś innego:

  1. Utwórz nową parę kluczy i pobierz dane uwierzytelniające
  2. Kliknij instancję prawym przyciskiem myszy> Utwórz AMI Po zakończeniu
  3. zakończ instancję (lub po prostu ją zatrzymaj, aż będziesz pewien, że możesz utworzyć kolejną z nowej błyszczącej AMI)
  4. Uruchom nową instancję EC2 z właśnie utworzonego interfejsu AMI i określ nową parę kluczy utworzoną w kroku (1) powyżej.

Mam nadzieję, że może ci się to przydać i zaoszczędzić trochę czasu, a także zminimalizować liczbę białych włosów uzyskanych z takich rzeczy :)

George Smith
źródło