Вы не можете применить пару ключей к работающему экземпляру.Вы можете использовать только новую пару ключей для запуска нового экземпляра.
Для восстановления, если это загрузочный AMI EBS, вы можете остановить его, сделать моментальный снимок тома.Создайте новый том на его основе.И сможете использовать его обратно для запуска старого экземпляра, создания нового образа или восстановления данных.
Хотя данные в эфемерном хранилище будут потеряны.
В связи с популярностью этого вопроса и ответа, я хотел собрать информацию в ссылке, на которой Родни разместилего комментарий.
Кредит предоставляется Эрику Хаммонду для этой информации .
Исправление файлов в корневом томе EBS экземпляра EC2
Вы можете просматривать и редактировать файлы на корневом томе EBS в экземпляре EC2, даже если вы находитесь в том, что вы считаете катастрофической ситуацией, такой как:
- Вы потеряли свой ключ ssh или забыливаш пароль
- Вы допустили ошибку при редактировании файла / etc / sudoers и больше не можете получить root-доступ с помощью sudo для его исправления
- По какой-то причине ваш долго работающий экземпляр зависает, к нему нельзя связатьсяи не загружается должным образом
- Вам необходимо восстановить файлы из экземпляра, но вы не можете получить к нему доступ
На физическом компьютере, сидящем за вашим столом, вы можете просто загрузить системус помощью компакт-диска или USB-накопителя установите жесткий диск, извлеките и исправьте файлы, затем перезагрузите компьютер, чтобы вернуться к работе.
Однако удаленный экземпляр EC2 кажется удаленным и недоступным, когда вы находитесь водна из этих ситуаций.К счастью, AWS предоставляет нам мощь и гибкость для возможности восстановления системы, подобной этой, при условии, что мы запускаем загрузочные экземпляры EBS, а не хранилище экземпляров.
Подход в EC2 несколько похож на физическийрешение, но мы собираемся переместить и смонтировать неисправный «жесткий диск» (корневой том EBS) в другой экземпляр, исправить его, а затем переместить обратно.
В некоторых ситуациях это может быть просто прощечтобы запустить новый экземпляр EC2 и выбросить плохой, но если вы действительно хотите исправить свои файлы, вот подход, который работал для многих:
Setup
Определите исходный экземпляр (A) и том, содержащий поврежденный корневой том EBS, с файлами, которые вы хотите просмотреть и отредактировать.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Определите второй экземпляр EC2 (B), который вы будете использовать дляисправить файлы на оригинальном томе EBS.Этот экземпляр должен работать в той же зоне доступности, что и экземпляр A, чтобы к нему мог подключаться том EBS.Если экземпляр еще не запущен, запустите временный.
instance_b=i-YYYYYYYY
Остановите сломанный экземпляр A (ожидая, пока он полностью остановится), отсоедините корневой том EBS от экземпляра.(ожидая его отсоединения), затем подключите том к экземпляру B. на неиспользуемом устройстве.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh к экземпляру B и подключите том, чтобы вы могли получить доступ к его файловой системе.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Исправьте это
На данный момент вся ваша корневая файловая система из экземпляра A доступна для просмотра и редактирования в / vol-a на экземпляре B. Например, выможет потребоваться:
- Поместить правильные ключи ssh в /vol-a/home/ubuntu/.ssh/authorized_keys
- Редактировать и исправить / vol-a / etc / sudoers
- Поиск сообщений об ошибках в / vol-a / var / log / syslog
- Копирование важных файлов из / vol-a /…
Примечание: UID в двух экземплярах может не совпадать, поэтому будьте осторожны, если вы создаете, редактируете или копируете файлы, принадлежащиенекорневые пользователи.Например, ваш пользователь mysql в экземпляре A может иметь тот же UID, что и пользователь postfix в экземпляре B, что может вызвать проблемы, если вы укажете файлы с одним именем, а затем переместите том обратно на A.
Завершение
После того, как вы закончите и будете довольны файлами в / vol-a, размонтируйте файловую систему (все еще на экземпляре B):
sudo umount /vol-a
sudo rmdir /vol-a
Теперь,вернитесь в свою систему с помощью ec2-api-tools, продолжайте перемещать том EBS обратно в его дом на исходном экземпляре A и запустите экземпляр снова:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Надеюсь, вы устранили проблему, пришел экземпляр Aпросто отлично, и вы можете выполнить то, что вы изначально намеревались сделать.Если нет, возможно, вам придется продолжать повторять эти шаги до тех пор, пока он не заработает.
Примечание. Если у вас был Elastic IP-адрес, назначенный экземпляру A, когда вы его остановили, вам нужно будет повторно связатьпосле запуска снова.
Помните!Если ваш экземпляр B был временно запущен только для этого процесса, не забудьте прекратить его сейчас.