Начало работы с серийной консолью

Серийная консоль — это способ получить доступ к виртуальной машине вне зависимости от состояния сети или операционной системы. Таким образом, вы можете использовать консоль, например, для устранения неисправностей виртуальных машин или при возникновении проблем с доступом через SSH.

По умолчанию доступ к серийной консоли отключен.

Важная информация

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

Перед началом работы

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

  1. Подготовьте пару ключей (открытый и закрытый) для SSH-доступа на виртуальную машину. Серийная консоль аутентифицирует пользователей с помощью SSH-ключей.

  2. Создайте текстовый файл (например, sshkeys.txt) и укажите следующие данные:

    <имя пользователя>:<открытый SSH-ключ пользователя>
    

    Пример текстового файла для пользователя yc-user:

    yc-user:ssh-rsa AAAAB3Nza......OjbSMRX yc-user@example.com
    

    По умолчанию пользовательские SSH-ключи хранятся в каталоге ~/.ssh этого пользователя. Получить открытый ключ можно с помощью команды cat ~/.ssh/<имя открытого ключа>.pub.

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

Чтобы включить доступ к серийной консоли при создании виртуальной машины, установите в метаданных параметр serial-port-enable в значение 1.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для создания виртуальной машины:

    $ yc compute instance create --help
    
  2. Выберите один из публичных образов на базе операционной системы Linux (например, Ubuntu).

    Чтобы получить список доступных образов, выполните следующую команду:

    $ yc compute image list --folder-id standard-images
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    |          ID          |                NAME                 |          FAMILY          |     PRODUCT IDS      | STATUS |
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    ...
    | fdvk34al8k5nltb58shr | centos-7-1549279494                 | centos-7                 | dqni65lfhvv2den5gtv9 | READY  |
    | fdv7ooobjfl3ts9gqp0q | windows-2016-gvlk-1548913814        | windows-2016-gvlk        | dqnnc72gj2ist3ktjj1p | READY  |
    | fdv4f5kv5cvf3ohu4flt | ubuntu-1604-lts-1549457823          | ubuntu-1604-lts          | dqnnb6dc7640c5i968ro | READY  |
    ...
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    
  3. Создайте виртуальную машину в каталоге по умолчанию:

    $ yc compute instance create \
        --name first-instance \
        --zone ru-central1-a \
        --network-interface subnet-name=default-a,nat-ip-version=ipv4 \
        --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-1604-lts \
        --metadata-from-file ssh-keys=sshkeys.txt \
        --ssh-key ~/.ssh/<имя открытого ключа>.pub \
        --metadata serial-port-enable=1
    

    Данная команда создаст виртуальную машину:

    • С OC Ubuntu.
    • С именем first-instance.
    • В зоне ru-central1-a.
    • С активной серийной консолью.

    В ОС виртуальной машины будет автоматически создан пользователь yc-user с указанным открытым ключом.

  1. Посмотрите описание команды CLI для создания виртуальной машины:

    $ yc compute instance create --help
    
  2. Выберите публичный образ на базе операционной системы Windows.

    Чтобы получить список доступных образов, выполните следующую команду:

    $ yc compute image list --folder-id standard-images
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    |          ID          |                NAME                 |          FAMILY          |     PRODUCT IDS      | STATUS |
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    ...
    | fdvk34al8k5nltb58shr | centos-7-1549279494                 | centos-7                 | dqni65lfhvv2den5gtv9 | READY  |
    | fdv7ooobjfl3ts9gqp0q | windows-2016-gvlk-1548913814        | windows-2016-gvlk        | dqnnc72gj2ist3ktjj1p | READY  |
    | fdv4f5kv5cvf3ohu4flt | ubuntu-1604-lts-1549457823          | ubuntu-1604-lts          | dqnnb6dc7640c5i968ro | READY  |
    ...
    +----------------------+-------------------------------------+--------------------------+----------------------+--------+
    
  3. Создайте виртуальную машину в каталоге по умолчанию:

    $ yc compute instance create \
    --name win-instance \
    --metadata-from-file user-data=metadata.yaml \
    --zone ru-central1-c \
    --network-interface subnet-name=default-c,nat-ip-version=ipv4 \
    --create-boot-disk image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata serial-port-enable=1
    

    Данная команда создаст виртуальную машину:

    • С OC Windows.
    • С именем win-instance.
    • В зоне ru-central1-c.
    • С активной серийной консолью.

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

Включение консоли при изменении виртуальной машины

Чтобы включить доступ к серийной консоли при изменении виртуальной машины, установите в метаданных параметр serial-port-enable в значение 1.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Получите список виртуальных машин в каталоге по умолчанию:

    $ yc compute instance list
    +----------------------+-----------------+---------------+---------+----------------------+
    |          ID          |       NAME      |    ZONE ID    | STATUS  |     DESCRIPTION      |
    +----------------------+-----------------+---------------+---------+----------------------+
    | fhm0b28lgfp4tkoa3jl6 | first-instance  | ru-central1-a | RUNNING | my first vm via CLI  |
    | fhm9gk85nj7gcoji2f8s | second-instance | ru-central1-a | RUNNING | my second vm via CLI |
    +----------------------+-----------------+---------------+---------+----------------------+
    
  2. Выберите идентификатор (ID) или имя (NAME) нужной машины, например first-instance.

  3. Установите в метаданных виртуальной машины параметр serial-port-enable=1:

    $ yc compute instance add-metadata \
        --name first-instance \
        --metadata serial-port-enable=1
    

    Данная команда запустит операцию активации серийной консоли на машине с именем first-instance.

Настройка виртуальной машины для доступа через серийный порт

Чтобы серийная консоль была доступна со стороны операционной системы, ОС должна быть настроена соответствующим образом:

Linux

Чтобы подключаться к серийной консоли Linux, убедитесь, что отключена парольная аутентификация для SSH, и при необходимости задайте пароль для нужного пользователя операционной системы.

Отключите SSH-авторизацию по паролю

Примечание

В публичных образах Linux, предоставляемых Яндекс.Облаком, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.

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

Чтобы отключить парольную аутентификацию по SSH:

  1. Откройте файл конфигурации SSH-сервера, по умолчанию /etc/ssh/sshd_config. Файл доступен для чтения и редактирования только суперпользователю.

  2. Задайте для опции PasswordAuthentication значение no.

  3. Перезапустите SSH-сервер:

    $ sudo systemctl restart ssh
    

Создайте пароль для пользователя Linux

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

Чтобы создать локальный пароль, используйте CLI.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Получите список виртуальных машин в каталоге по умолчанию:
$ yc compute instance list
+----------------------+-----------------+---------------+---------+----------------------+
|          ID          |       NAME      |    ZONE ID    | STATUS  |     DESCRIPTION      |
+----------------------+-----------------+---------------+---------+----------------------+
| fhm0b28lgfp4tkoa3jl6 | first-instance  | ru-central1-a | RUNNING | my first vm via CLI  |
| fhm9gk85nj7gcoji2f8s | second-instance | ru-central1-a | RUNNING | my second vm via CLI |
+----------------------+-----------------+---------------+---------+----------------------+
  1. Выберите идентификатор (ID) или имя (NAME) нужной машины, например first-instance.

  2. Получите публичный IP-адрес виртуальной машины.

    $ yc compute instance get first-instance
    

    В выводе команды найдите адрес виртуальной машины в блоке one_to_one_nat:

    ...
    one_to_one_nat:
        address: <публичный IP-адрес>
        ip_version: IPV4
    ...
    

    Если публичного IP-адреса нет, измените виртуальную машину, дополнительно указав флаг --public-ip.

  3. Подключитесь к виртуальной машине. Подробнее читайте в разделе Подключение к виртуальной машине.

  4. Создайте локальный пароль. В OC Linux задать пароль можно с помощью команды passwd:

    $ sudo passwd <имя пользователя>
    

    Пример для пользователя yc-user:

    $ sudo passwd yc-user
    
  5. Завершите SSH-сессию с помощью команды exit.

Windows

Аналог серийной консоли в Windows — специальная административная консоль (Special Administration Console, SAC).

Примечание

Если ваша виртуальная машина была создана после 22 февраля 2019 года, дополнительно настраивать ничего не нужно — SAC включена по умолчанию.

Если ваша виртуальная машина была создана до 22 февраля 2019 года, для подключения к SAC нужно изменить реестр Windows:

  1. Подключитесь к виртуальной машине по RDP.

  2. Запустите cmd или PowerShell и выполните следующие команды:

    $ bcdedit /ems "{current}" on
    The operation completed successfully.
    
    $ bcdedit /emssettings EMSPORT:2 EMSBAUDRATE:115200
    The operation completed successfully.
    
  3. Перезагрузите виртуальную машину.