Восстановление доступа к виртуальной машине с утерянным SSH-ключом
Описание проблемы
Утерян ключ SSH, используемый для подключения к виртуальной машине.
Решение проблемы
Существует несколько вариантов восстановления доступа к виртуальной машине, SSH-ключи для подключения к которой были утеряны.
Если виртуальная машина создана из публичного образа и внутри нее используется cloud-init, вы можете восстановить доступ без создания снимков и выполнения chroot:
- Добавьте новый публичный SSH-ключ в метаданные ВМ в ключ
user-dataв формате#cloud-config(см. Ключи, обрабатываемые в публичных образах). - Перезагрузите ВМ.
Пример user-data (добавляет пользователя rescue с вашим публичным ключом и правами sudo):
#cloud-config
users:
- name: rescue
groups: sudo
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh_authorized_keys:
- ssh-ed25519 AAAA...your_public_key... comment
Важно
При изменении метаданных значение user-data перезаписывается целиком. Если вы описываете пользователей через user-data, укажите в нем данные всех нужных пользователей, чтобы не потерять доступ к ранее созданным.
Подробнее см. Изменение метаданных виртуальной машины.
Если пароль для пользователя Linux не был установлен, вы можете создать снимок диска проблемной виртуальной машины, после чего создать новую ВМ из данного снимка, выбрав на странице создания ВМ Добавить диск → Снимок.
Если описанный выше способ не решил проблему, выполните следующие действия:
- Cоздайте новый диск из снимка проблемной ВМ.
- Подключите его в качестве дополнительного диска к другой ВМ.
- Измените корневой каталог, используя
chroot. - Измените файлы конфигураций, влияющие на недоступность ВМ, например, задайте новый пароль с помощью команды
sudo passwd $USERNAME, где$USERNAME— имя пользователя Linux, для которого требуется задать пароль. - Отключите дополнительный диск от вспомогательной ВМ и создайте из него новую ВМ, используя измененный диск в качестве загрузочного.
Если ранее внутри ВМ вы устанавливали пароль для пользователя Linux, вы можете воспользоваться серийной консолью. Для настройки воспользуйтесь инструкцией из документации.
После активации серийной консоли подключитесь к виртуальной машине. Мы рекомендуем использовать способ подключения с помощью CLI.