Nie można zastosować pary kluczy do działającej instancji. Możesz użyć nowej pary kluczy tylko do uruchomienia nowej instancji.
Aby odzyskać, jeśli jest to AMI rozruchowy EBS, możesz go zatrzymać, zrobić migawkę woluminu. Utwórz na tej podstawie nowy wolumin. I możesz użyć go ponownie, aby uruchomić starą instancję, utworzyć nowy obraz lub odzyskać dane.
Chociaż dane w efemerycznym magazynie zostaną utracone.
Ze względu na popularność tego pytania i odpowiedzi chciałem uchwycić informacje w linku opublikowanym przez Rodneya w jego komentarzu.
Podziękowania dla Erica Hammonda za tę informację .
Naprawianie plików w głównym katalogu EBS wystąpienia EC2
Możesz badać i edytować pliki w głównym woluminie EBS w instancji EC2, nawet jeśli znajdujesz się w katastrofalnej sytuacji, takiej jak:
- Zgubiłeś klucz ssh lub zapomniałeś hasła
- Popełniłeś błąd podczas edycji pliku / etc / sudoers i nie możesz już uzyskać dostępu do konta root za pomocą sudo, aby to naprawić
- Z jakiegoś powodu twoja długo działająca instancja jest zawieszona, nie można się z nią skontaktować i nie uruchamia się poprawnie
- Musisz odzyskać pliki z instancji, ale nie możesz się do niej dostać
Na fizycznym komputerze siedzącym przy biurku możesz po prostu uruchomić system za pomocą dysku CD lub pamięci USB, zamontować dysk twardy, sprawdzić i naprawić pliki, a następnie ponownie uruchomić komputer, aby wrócić do pracy.
Zdalna instancja EC2 wydaje się jednak odległa i niedostępna, gdy znajdujesz się w jednej z takich sytuacji. Na szczęście AWS zapewnia nam moc i elastyczność umożliwiającą odzyskanie takiego systemu, pod warunkiem, że uruchamiamy instancje rozruchowe EBS, a nie przechowujemy instancję.
Podejście do EC2 jest nieco podobne do rozwiązania fizycznego, ale zamierzamy przenieść i zamontować wadliwy „dysk twardy” (główny wolumin EBS) w innej instancji, naprawić go, a następnie przenieść z powrotem.
W niektórych sytuacjach może być po prostu łatwiej rozpocząć nową instancję EC2 i wyrzucić złą, ale jeśli naprawdę chcesz naprawić swoje pliki, oto podejście, które działało dla wielu:
Ustawiać
Zidentyfikuj oryginalne wystąpienie (A) i wolumin zawierający uszkodzony główny wolumin EBS za pomocą plików, które chcesz wyświetlić i edytować.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Zidentyfikuj drugą instancję EC2 (B), której użyjesz do naprawy plików na oryginalnym woluminie EBS. To wystąpienie musi działać w tej samej strefie dostępności, co wystąpienie A, aby można było do niego dołączyć wolumin EBS. Jeśli nie masz już uruchomionej instancji, uruchom tymczasową.
instance_b=i-YYYYYYYY
Zatrzymaj uszkodzoną instancję A (czekając na jej całkowite zatrzymanie), odłącz główny wolumin EBS od instancji (czekając na jego odłączenie), a następnie podłącz wolumin do instancji B na nieużywanym urządzeniu.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh do instancji B i podłącz wolumin, aby uzyskać dostęp do jego systemu plików.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Napraw to
W tym momencie cały główny system plików z instancji A jest dostępny do przeglądania i edycji pod / vol-a w instancji B. Na przykład możesz:
- Umieść poprawne klucze ssh w /vol-a/home/ubuntu/.ssh/authorized_keys
- Edytuj i napraw / vol-a / etc / sudoers
- Poszukaj komunikatów o błędach w / vol-a / var / log / syslog
- Skopiuj ważne pliki z / vol-a /…
Uwaga: Uids w obu instancjach mogą nie być identyczne, więc zachowaj ostrożność, jeśli tworzysz, edytujesz lub kopiujesz pliki należące do użytkowników innych niż root. Na przykład użytkownik mysql w instancji A może mieć ten sam identyfikator UID, co użytkownik postfiksowy w instancji B, co może powodować problemy, jeśli użytkownik wyświetli pliki o jednej nazwie, a następnie przeniesie wolumin z powrotem do A.
Zakończyć
Po zakończeniu i zadowalaniu się plikami w / vol-a, odmontuj system plików (wciąż na instancji B):
sudo umount /vol-a
sudo rmdir /vol-a
Teraz z powrotem w systemie za pomocą ec2-api-tools kontynuuj przenoszenie woluminu EBS z powrotem do jego pierwotnej instancji A i ponownie uruchom instancję:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Mamy nadzieję, że naprawiłeś problem, instancja A wychodzi dobrze i możesz osiągnąć to, co pierwotnie zamierzałeś zrobić. Jeśli nie, być może będziesz musiał powtarzać te kroki, aż będzie działać.
Uwaga: Jeśli elastyczny adres IP został przypisany do instancji A po jej zatrzymaniu, konieczne będzie ponowne powiązanie go po ponownym uruchomieniu.
Zapamiętaj! Jeśli instancja B została tymczasowo uruchomiona tylko dla tego procesu, nie zapomnij go teraz zakończyć.
ssh-add
powinien zrobić to, czego potrzebujesz.