Ви не можете застосувати ключ до запущеного екземпляра. Ви можете використовувати новий ключ, щоб запустити новий екземпляр.
Для відновлення, якщо це завантажувальний AMI EBS, ви можете зупинити його, зробити знімок обсягу. Створіть на ній новий том. І мати можливість використовувати його для запуску старого примірника, створення нового зображення або відновлення даних.
Хоча дані на ефемерному сховищі будуть втрачені.
Через популярність цього питання та відповіді я хотів зафіксувати інформацію за посиланням, яке Родні розмістив у своєму коментарі.
Кредит належить Еріку Хаммону за цю інформацію .
Виправлення файлів на кореневому томі EBS екземпляра EC2
Ви можете досліджувати та редагувати файли в кореневому томі EBS на екземплярі EC2, навіть якщо ви знаходитесь у ситуації, що ви вважали катастрофічною:
- Ви втратили ключ ssh або забули свій пароль
- Ви помилилися редагувати файл / etc / sudoers і більше не можете отримати кореневий доступ із sudo, щоб виправити його
- Ваш тривалий екземпляр з певних причин підвішений, з ним не можна зв’язатися та не може належним чином завантажитися
- Вам потрібно відновити файли з екземпляра, але не можете дістатися до нього
На фізичному комп’ютері, який сидить за вашим столом, ви можете просто завантажити систему за допомогою CD або USB-накопичувача, встановити жорсткий диск, перевірити та виправити файли, а потім перезавантажити комп'ютер, щоб повернутися до справи.
Однак віддалений екземпляр EC2 здається далеким і недоступним, коли ви знаходитесь в одній із цих ситуацій. На щастя, AWS надає нам потужність та гнучкість для відновлення такої системи за умови, що ми запускаємо екземпляри завантаження EBS, а не зберігаємо інстанції.
Підхід на EC2 дещо схожий на фізичне рішення, але ми збираємося перемістити та встановити несправний «жорсткий диск» (кореневий об'єм EBS) в інший екземпляр, виправити його, а потім повернути його назад.
У деяких ситуаціях може бути просто простіше запустити новий екземпляр EC2 і викинути поганий, але якщо ви дійсно хочете виправити свої файли, ось такий підхід, який працює для багатьох:
Налаштування
Визначте оригінальний екземпляр (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 / тощо / sudoers
- Шукайте повідомлення про помилки в / vol-a / var / log / syslog
- Скопіюйте важливі файли з / vol-a /…
Примітка. Посібники для двох примірників можуть бути не однаковими, тому будьте уважні, якщо ви створюєте, редагуєте чи копіюєте файли, що належать користувачам, які не користуються коренем. Наприклад, ваш користувач mysql в екземплярі A може мати той самий UID, що і ваш поштовий індекс, в екземплярі B, що може спричинити проблеми, якщо ви заглушите файли з одним ім'ям, а потім перенесіть том в A.
Згорнути
Після того, як ви закінчите, і ви задоволені файлами під / vol-a, відключіть файлову систему (все ще в екземплярі-B):
sudo umount /vol-a
sudo rmdir /vol-a
Тепер поверніться до вашої системи з ec2-api-інструментами, продовжуйте переміщувати том EBS назад до своєї домашньої частини оригінального екземпляра A та запускайте екземпляр знову:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Сподіваємось, ви вирішили проблему, наприклад, A виходить просто чудово, і ви зможете виконати те, що ви спочатку вирішили зробити. Якщо ні, то, можливо, вам доведеться продовжувати повторювати ці дії, поки ви не працюєте.
Примітка: Якщо вам було припинено еластичну IP-адресу для примірника А, коли ви зупинили її, вам потрібно буде знову пов’язати її після її повторного запуску.
Пам'ятайте! Якщо ваш екземпляр B був тимчасово запущений саме для цього процесу, не забудьте його припинити зараз.
ssh-add
слід робити те, що потрібно.