Amazon linux 2 ami hvm ssd volume type

Пошаговая инструкция по восстановлению доступа к Linux Amazon EC2 инстансу при потере pem-файла

Если при создании Linux-инстанса в AWS не была создана пара ключей (KeyPair) для доступа к нему через SSH либо они утеряны, то необходимо совершить ряд операций для получения доступа к машине. К уже запущенному инстансу добавить ключи через консоль AWS невозможно. Существует три способа, с помощью которых мы сможем восстановить доступ по SSH к инстансу.

Самый простой способ — настройка ключа с использованием механизма cloud-init (спасибо за подсказку yusman). Но он не работает если права на директорию /home повреждены или дистрибутив не поддерживает директивы cloud-init.

Второй способ — создание образа (Amazon Machine Image) с существующего инстанса и последующий запуск нового инстанса на его основе, но с созданием ключа. Таким образом фактически будет клонирована существующая машина с той лишь разницей, что на последнем этапе возможно создать новые ключи. Создание образа может занять длительное время для инстанса с дисками большого объема, и вам придется настраивать все сервисы, завязанные на эту машину заново. Поэтому данный способ в большинстве случаев займет больше времени.

В официальной документации от Amazon описывается и другой способ. Он позволяет восстановить доступ и свести к минимуму издержки на перенастройку сервисов (по сравнению со вторым способом), которые завязаны на инстанс, к которому потерян доступ. В статье дается его пошаговое описание.

Внимание! Этот способ работает только для инстансов, в которых в качестве корневого устройства используется блочное хранилище (Amazon Elastic Block Store), и не работает для локального хранилища инстансов (Amazon EC2 Instance Store).

Чтобы узнать, какой тип корневого устройства используется у вас, откройте Amazon EC2 консоль, перейдите в Instances, выберите инстанс и проверьте значение параметра Root device type в панели с детальной информацией.

Шаг 1. Подготовка

Для начала необходимо сохранить некоторую информацию, чтобы не пришлось отвлекаться и не переходить на другие экраны (тем более это будет очень неудобно). Все данные можно найти в детальной информации инстанса (как туда попасть вы уже знаете). Запишите следующие настройки:

  • Instance ID
  • AMI ID
  • EBS ID
  • Root device
  • Availability zone

Для инстанса, запущенного в VPC , сохраните значение VPC ID.

Для EC2-classic: eсли для инстанса создан эластичный IP-адрес (Elastic IP), то необходимо сохранить и его значение.

Для получения идентификатора блочного хранилища (EBS ID) необходимо кликнуть по названию Root device.

Шаг 2. Создание временного инстанса

Следующий этап — создание инстанса, с помощью которого вы будете восстанавливать ключи на оригинальном инстансе. Можно пропустить этот шаг, если у вас есть другой запущенный инстанс, находящийся в той же зоне (Availability zone), что и восстанавливаемый, и при этом он создан с использованием такого же AMI или версия операционной системы на нем позволит подключить диск с оригинального инстанса и скопировать на него ключи SSH. Если такого инстанса нет, то выполните следующие действия:

  • Перейдите в консоль EC2 (на дашборд или в меню Instances) и нажмите Launch Instance
  • На странице выбора AMI (Choose an Amazon Machine Image) выберите такой, который использовался для создания оригинального инстанса (его вы записывали на первом шаге — AMI ID). Если по какой-то причине этот AMI недоступен, можно создать образ с оригинального инстанса и использовать его либо выбрать такой тип AMI, к которому бы можно было подключить корневой диск восстанавливаемого инстанса
  • На странице выбора типа инстанса (Choose an Instance Type) выберите самый дешевый из доступных типов
  • На странице с детальной информацией (Configure Instance Details) укажите такую же зону (Availability Zone), как в нашем инстансе. Если он запущен в VPC, выберите в пункте Network аналогичную VPC и укажите подсеть (subnet) в данной зоне.

При этом настройки Network Interfaces нет необходимости менять.

  • На странице редактирования хранилища (Add Storage) никаких изменений не требуется
  • На странице тэгов (Add Tags) добавьте имя для временного инстанса, чтобы его было легко идентифицировать и потом не тратить время на сверку Instance ID и EBS ID, так как на страницах, где надо будет определить с каким инстансом или томом вы работаете, в названии будет фигурировать это значение.

  • Жмите Review and Launch, а затем Launch
  • Последний этап — выбор существующей пары ключей либо создание новой. Загрузите файл ключа (pem) и не забудьте сделать бэкап, чтобы все операции не пришлось выполнять заново.

  • После того, как сохранили файл, запустите инстанс кнопкой Launch Instances
  • Шаг 3. Подключение корневого диска с восстанавливаемой машины к временному инстансу

    Сначала необходимо отключить диск от оригинального инстанса и подключить его к временному. Так как это корневой диск, перед его отключением оригинальный инстанс придется остановить.

      Перейдите в консоль EC2 в раздел Instances и выберите оригинальный инстанс (его можно определить по записанному ранее Instance ID либо по имени, которое отличается от того которое вы указали при создании временного инстанса).

    Далее в меню Actions — Instance State — Stop.

    Внимание! Когда останавливается инстанс, все данные на локальных хранилищах (Amazon EC2 Instance Store) стираются. Если у вас есть данные на таких томах, позаботьтесь об их сохранности, перенеся их на постоянное хранилище, если это необходимо.

    После того как инстанс остановлен, переходите в раздел Elastic Block Store — Volumes и выбирайте корневой том оригинального инстанса. Его можно определить по сохраненному Volume ID либо основываясь на информации из колонки Attachment Information, в которой содержится название инстанса.

    Далее в меню Actions — Detach Volume
    Подключите этот том к временному инстансу. Для этого выберите его снова, далее в меню Actions — Attach Volume и в появившемся диалоговом окне укажите ваш временный инстанс.

    После чего нажимайте Attach. В случае, если оригинальный инстанс создавался через AWS Marketplace AMI и раздел содержит коды AWS Marketplace, вы получите ошибку, в которой говорится о том, что нельзя подключить раздел с кодами к работающему инстансу.

    В этом случае остановите наш временный инстанс и заново выполните действия по подключению корневого тома оригинального инстанса к временному инстансу. Вторая попытка должна быть удачной.

    Теперь вы должны увидеть, что оба диска подключены к временному инстансу.

    Если вы останавливали инстанс, запустите его:

    • Перейдите в раздел Instances в навигационной панели
    • Выберите временный инстанс
    • Далее в меню Actions — Instance State — Start.

    Шаг 4. Подготовка ключей для подключения к инстансу по SSH

    Пользователям Linux нет необходимости генерировать какие-то дополнительные ключи. Необходимо лишь дать права на чтение этого файла:

    chmod 400 my-keypair.pem

    Для подключения к Linux-машине мы будем использовать утилиту PuTTY, поэтому, если она у вас не установлена, скачайте её. Для подключения по SSH с её помощью, вам понадобится ppk-ключ, в то время как с AWS был сохранён ключ в формате pem. Для того, чтобы получить ключ к нужном формате, сделайте следующее:

    • Откройте PuTTYgen (устанавливается вместе с PuTTY)
    • Выберите в параметрах RSA 2048 бит

    Шаг 5. Подключение к временному инстансу по SSH

    Подключитесь по 22 порту с использованием ключа. Имя пользователя зависит от того, какой AMI использовался при создании инстанса. Его вы записывали в самом начале. Возможны следующие имена пользователей:

    • Amazon Linux 2 или Amazon Linux AMI — ec2-user
    • Centos AMI — centos
    • Debian AMI — admin или root
    • Fedora AMI — ec2-user или fedora
    • RHEL AMI — ec2-user или root
    • SUSE AMI — ec2-user или root
    • Ubuntu AMI — ubuntu
    • Для остальных, если имена ec2-user и root не работают — обратитесь к поставщику AMI

    Название хоста, к которому надо подключаться, — user@aws-host.amazon.com, где user — имя, которое описано выше, а aws-host.amazon.com — ip-адрес вашего инстанса, который можно найти на вкладке детальной информации (с неё вы в самом начале сохраняли параметры). Параметр называется IPv4 Public IP. Обратите внимание, что если вы не используете Elastic IP, при каждом старте инстанса у него будет новый ip-адрес.

    • Запустите PuTTY
    • В поле Host Name адрес в формате имя_пользователя@ip-адрес

  • Перейдите в раздел Connection — SSH — Auth и загрузите ppk-ключ (Private key file for authentication)
  • Нажмите Open и затем согласитесь доверять серверу
  • Если вы указывали парольную фразу (passphrase) при создании ppk-ключа, введите её, чтобы подтвердить вход:

    Шаг 6. Копирование ключей с временного инстанса на оригинальный

    Смонтируйте том, который вы подключили к временному инстансу, чтобы вы могли получить доступ к его файловой системе.

    Например, если имя диска /dev/sdf (может отображаться по-разному на вашем инстансе), используйте следующие операции для монтирования тома в /mnt/tempvol :

      Определите названия разделов подключенного диска:

    /dev/xvda1 и /dev/xvdf1 — разделы дисков. У /dev/xvdf1 не указана точка монтирования (MOUNTPOINT), значит это раздел диска, который мы подключили ранее.

    Создайте временную директорию для монтирования раздела:

    ]$ sudo mkdir /mnt/tempvol
    Смонтируйте раздел в созданный каталог:

    ]$ sudo mount /dev/ xvdf1 /mnt/tempvol

    Скопируйте SSH-ключи с временного инстанса на смонтированный раздел.

    Внимание! Используйте имя пользователя, которое указано в командной строке. Это необходимо, так как несмотря на то, что вы успешно подключились со стандартным именем пользователя, которое зависит от операционной системы (описано в шаге 5), в AMI из AWS Marketplace оно может быть другим после входа. Например, для AMI WordPress Certified by Bitnami при входе по SSH используется стандартный логин для Ubuntu — ubuntu . Однако имя пользователя после входа в систему — bitnami

    Например, если имя пользователя ubuntu , используйте следующую команду для копирования:

    ]$ cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    Если у вас нет прав на редактирование файлов в /mnt/tempvol , то скопируйте файлы с использованием sudo и проверьте права, чтобы удостовериться, что вы сможете зайти на оригинальный инстанс:

      Проверьте права на файл:

    ]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
    total 4
    -rw——- 1 200 500 392 Aug 15 00:06 authorized_keys

    В примере, 200 — это ID пользователя и 500 — ID группы.

    Перезапустите команду копирования ключей с использованием sudo :

    ]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    Проверьте, не изменились ли права на файл:

    ]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    Если права изменились, восстановите их:

    ]$ sudo chown 200 : 500 /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    ]$ sudo umount /mnt/tempvol

    Шаг 7. Запуск инстанса с восстановленным доступом по SSH

      В консоли EC2 выберите диск, который вы подключали к временному, и в меню: Actions — Detach Volume. Дождитесь, пока состояние (state) диска станет available (можете использовать кнопку Refresh для обновления информации).

    Не забудьте предварительно остановить инстанс, если раздел содержит коды AWS Marketplace.

  • Для этого же диска перейдите в меню Actions — Attach Volume
  • Выберите оригинальный инстанс и укажите имя корневого диска, которое вы записали в самом начале.

    Нажмите Attach

  • Запустите инстанс
  • Для EC2-classic: если для оригинального инстанса был настроен Elastic IP, переассоциируйте его с ним:

    • Перейдите в раздел Elastic IP на навигационной панели
    • Выберите адрес Elastic IP, который вы записали в самом начале
    • Далее Actions — Associate address
    • Выберите ID оригинального инстанса и нажмите Associate

  • Шаг 8. Проверка доступа

    Подключитесь к инстансу с восстановленным доступом с помощью созданного ключа.

    Если имя новой пары ключей отличается от того, который был ранее, убедитесь, что вы подключаетесь с использованием нового приватного ключа.

    Шаг 9. Завершающий этап

    Если вы создавали новый временный инстанс для того, чтобы выполнить все операции, а не использовали уже существующий, остановите его, если он вам больше не нужен:

    • Перейдите в раздел Instances на навигационной панели
    • Выберите временный инстанс
    • Далее в меню Actions — Instance State — Terminate

    Таким образом вы восстановили доступ к Linux Amazon EC2 инстансу.

    Источник

    Читайте также:  Нужен ли сторонний антивирус для windows 10
    Оцените статью