AWS EC2 забыл пароль и не может использовать SSH

У меня есть экземпляр ec2-Ubuntu. И теперь я забыл пароль для пользователя. К сожалению, я также потерял.pem-файл и.ppk-файл, который использовал для замазки. И мне трудно войти. Я хочу обновить мой код в этом.

Я прошел по ссылкам, дающим советы относительно того, что можно сделать.

  1. AWS-получение-SSH-доступ к ан-EC2 инстанции вы-выплавляемым доступ к

  2. надстройку пара ключей к существующему-ec2 инстанции

  3. запертой сам-вне корневой счет-ec2-убунту-экземпляр

  4. ec2-фикс-EBS-корень

У меня есть дополнительное ограничение, что частный i / p-адрес системы не должен изменяться. Одно из используемых мной программ использует системный частный i / p-адрес для лицензии. И в настоящее время мой экземпляр имеет только один том и является корневым томом.

Основываясь на вышеупомянутых ссылках, мне нужно отсоединить свой том и присоединиться к другому экземпляру. Внесите необходимые изменения для доступа. И прикрепите к оригинальному экземпляру. Однако, поскольку том в моем случае является корневым томом, мне нужно остановить экземпляр, а затем отключить его. Если мое понимание верно, это может вызвать изменение в частном i / p-адресе экземпляра.

Хотите знать, если есть что-то, что можно сделать? Или, следуя шагам, указанным в ссылках, это единственный способ, а затем обновить лицензию на программное обеспечение при перезагрузке экземпляра?

Спасибо

4 ответа

Примечание. Остановка / запуск экземпляра EC2 изменит IP-адрес (просто прочтите, что OP необходимо, чтобы IP-адрес оставался неизменным).

У меня это работает для AWS EC2 Ubuntu 18.04.

  • сгенерируйте новую пару ключей (используйте генератор ключей- замазок или, если спешите, онлайн-генератор).
  • вставить сгенерированный ssh-rsa ... открытый ключ в скрипт ниже
  • Остановить экземпляр
  • установить данные пользователя экземпляра в этот облачный сценарий инициализации
#cloud-config
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys
  • Запуск экземпляра
  • тестовое соединение
  • снова остановить экземпляр и удалить данные пользователя (вы, вероятно, забудете это сделать)

Примечания и предупреждения

  • Документы по инициализации облака AWS
  • документы и примеры облачной инициализации
  • Пробелы кажутся важными в сценариях облачной инициализации, сопротивляйтесь желанию форматировать, например, вставив пробел после хеша в #cloud-config
  • Я возился с cloud-init-per once, но так и не заработал, просто потратил много времени
  • Вы могли бы использовать >> вместо того > добавить ключ вместо перезаписи authorized_keysфайл. Но если вы испортили содержимое во время предыдущих попыток, вы никогда не узнаете, почему это не работает.
  • Вы можете изменить сценарий, чтобы нажать клавишу любого пользователя, например, для EC2 по умолчанию ubuntu пользователь: echo 'ssh-rsa ...' > /home/ubuntu/.ssh/authorized_keys
  • Остерегайтесь установленных агентов ротации ключей, таких как, например, JumpCloud, которые потенциально могут перезаписатьauthorized_keysфайл. Для JumpCloud вы можете изменить сценарий для записи вecho 'ssh-rsa ...' > /home/ubuntu/.ssh/authorized_keys.jcorig (JumpCloud включает содержимое этого файла)
  • Ubuntu должен быть настроен для разрешения SSH-подключений (должно быть по умолчанию)
  • Порт SSH должен быть открыт (брандмауэр Ubuntu)
  • Группа безопасности (брандмауэр AWS) экземпляра должна разрешить SSH-порт и ваш IP-адрес.
  • Весь процесс может быть автоматизирован (остановка, установка пользовательских данных, запуск, подключение и исправление, остановка, очистка пользовательских данных, запуск). Интересная команда AWS (клиент Java):
m_ec2.modifyInstanceAttribute(new ModifyInstanceAttributeRequest().withInstanceId("<instance-id>").withUserData(userdataBase64));

Мое предложение:

  1. Сделайте снимок экземпляра (создайте AMI).
  2. Запустите новый экземпляр с этим AMI и используйте новый ключ / пару.
  3. Используйте Elastic IP Address, чтобы он не менялся в следующий раз. Или используйте VPC, как предложил пользователь 1050134.

Я думаю, у вас есть два варианта:

  1. Создайте AMI экземпляра, запустите его с новым ключом / парой и прикрепите эластичный IP (рекомендуется).
  2. Или отсоедините корневой том, присоедините и смонтируйте его в другом экземпляре, затем создайте ключ / пару ssh и скопируйте содержимое открытого ключа в файл /home/ubuntu/.ssh/authorized_keys. Наконец, попробуйте войти в систему с новым сгенерированным закрытым ключом и пользователем Ubuntu.

Ссылка: Сброс паролей на управляемых узлах

Если у вас есть экземпляр с предустановленным агентом SSM (предустановленный AMI агента SSM ), вы можете выполнить следующие шаги.

Предпосылки

  1. Агент SSM версии 2.3.668.0 или выше должен быть установлен на управляемом узле.
  2. Конфигурация управления сеансом: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html Шифрование: включение службы управления ключами AWS (AWS KMS) завершено.
  3. шифрование данных диспетчера сеансов, чтобы использовать параметр сброса пароля для управляемых узлов.

Чтобы изменить пароль на управляемом узле (консоли)

  1. Откройте консоль AWS Systems Manager по адресу https://console.aws.amazon.com/systems-manager/.

На панели навигации выберите Диспетчер автопарка.

-или-

2. Если сначала открывается домашняя страница AWS Systems Manager, выберите значок меню ( ), чтобы открыть панель навигации, а затем выберите Fleet Manager в панели навигации.

3.Нажмите кнопку рядом с узлом, которому требуется новый пароль.

4. В меню действий с экземпляром выберите Сбросить пароль.

5.В поле Имя пользователя введите имя пользователя, для которого вы меняете пароль. Это может быть любое имя пользователя, имеющего учетную запись на узле.

6.Выберите Отправить.

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

Другие вопросы по тегам