Подключение к серийной консоли виртуальной машины по SSH
Внимание
Для подключения к серийной консоли виртуальной машины по SSH можно использовать только незащищенный паролем ключ. В противном случае соединение будет разорвано после ввода пароля.
После включения доступа, вы можете подключиться к серийной консоли для взаимодействия с ВМ. Перед подключением к серийной консоли внимательно ознакомьтесь с разделом Безопасность.
Безопасность
Важно
Оцените риск включения доступа через серийную консоль, учитывая следующие факторы:
-
ВМ будет доступна для управления из интернета даже в случае отсутствия внешнего IP-адреса.
Получить доступ к серийной консоли ВМ из консоли управления Yandex Cloud сможет пользователь, успешно аутентифицированный в консоли управления Yandex Cloud при наличии должных прав на ВМ. Доступ к серийной консоли ВМ из клиентского приложения SSH (например, Putty) или YC CLI также возможен путем аутентификации через SSH-ключ. В связи с этим необходимо тщательно контролировать SSH-ключ и завершать веб-сессию для снижения рисков ее перехвата. -
Сессия будет доступна одновременно всем пользователям, имеющим право доступа к серийной консоли.
Действия одного пользователя будут видны другим пользователям, если в это время они смотрят вывод серийной консоли. -
Незавершенная сессия может быть использована другим пользователем.
Мы рекомендуем включать серийную консоль только в случае крайней необходимости, выдавать такой доступ узкому кругу лиц и использовать стойкие пароли для доступа к ВМ.
Не забывайте отключать доступ после работы с серийной консолью.
Важным моментом при удаленном доступе является защита от атак посредника (MITM-атак)
Установить безопасное подключение можно следующими способами:
-
Вы можете скачивать текущий SHA256 Fingerprint
(отпечаток) SSH-ключа перед каждым подключением к ВМ.При первом подключении к ВМ клиент сообщает отпечаток SSH-ключа и ожидает решения по установке соединения:
YES
— установить соединение.NO
— отказаться.
Убедитесь, что отпечаток по ссылке совпадает с отпечатком, полученным от клиента.
-
Вы можете скачивать публичный SSH-ключ
хоста перед каждым подключением к серийной консоли.Используйте полученный публичный SSH-ключ при подключении к серийной консоли.
Рекомендуемые параметры запуска:
ssh -o ControlPath=none -o IdentitiesOnly=yes -o CheckHostIP=no -o StrictHostKeyChecking=yes -o UserKnownHostsFile=./serialssh-knownhosts -p 9600 -i ~/.ssh/<имя_закрытого_SSH-ключа> <идентификатор_ВМ>.<имя_пользователя>@serialssh.cloud.yandex.net
Публичный SSH-ключ хоста в будущем может быть изменен.
Чаще сверяйтесь с указанными файлами. Скачивайте данные файлы только по протоколу HTTPS, предварительно убедившись в валидности сертификата сайта https://storage.yandexcloud.net
. Если из-за проблем с сертификатом сайт не может обеспечить безопасное шифрование ваших данных, браузер предупреждает об этом.
Подключиться к серийной консоли
Примечание
Работа серийной консоли зависит от настроек используемой операционной системы. Сервис Compute Cloud обеспечивает канал между пользователем и COM-портом ВМ и не гарантирует стабильность работы консоли со стороны ОС.
Для подключения к ВМ необходимо знать ее идентификатор. Как получить идентификатор ВМ читайте в разделе Получить информацию о виртуальной машине.
Дальнейший порядок действий по подключению зависит от того, включен ли для ВМ доступ по OS Login. Если для ВМ включен доступ по OS Login, подключиться к серийной консоли можно с использованием экспортированного SSH-сертификата. Для подключения к ВМ с выключенным доступом по OS Login используются SSH-ключи.
Некоторые ОС могут запрашивать данные пользователя для доступа на ВМ. Поэтому перед подключением к серийной консоли таких ВМ необходимо создать локальный пароль пользователя.
-
Создайте локальный пароль пользователя на ВМ:
- Подключитесь к ВМ по SSH.
-
Создайте пользователя для аутентификации на ВМ через серийную консоль и задайте для него локальный пароль:
sudo useradd <имя_пользователя> && sudo passwd <имя_пользователя>
Где
<имя_пользователя>
— имя создаваемого пользователя, напримерyc-user
.По запросу системы введите пароль пользователя, затем подтвердите его.
Результат:
passwd: password updated successfully
- Отключитесь от ВМ. Для этого введите команду
logout
.
-
Подключитесь к ВМ.
Пример команды подключения:
ssh -t -p 9600 -o IdentitiesOnly=yes -i <путь_к_закрытому_SSH-ключу> <идентификатор_ВМ>.<имя_пользователя>@serialssh.cloud.yandex.net
Где:
путь_к_закрытому_SSH-ключу
— путь к закрытой части SSH-ключа, полученного при создании ВМ.идентификатор_ВМ
— идентификатор виртуальной машины. Как получить идентификатор ВМ читайте в разделе Получить информацию о виртуальной машине.имя_пользователя
— имя администратора, указанное при создании ВМ.
ssh -t -p 9600 -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 fhm0b28lgfp4********.yc-user@serialssh.cloud.yandex.net
При подключении система может запросить логин и пароль для аутентификации на ВМ. Введите созданные ранее логин и пароль, после чего вы получите доступ к серийной консоли.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте локальный пароль пользователя на ВМ:
- Подключитесь к ВМ по OS Login.
-
Создайте пользователя для аутентификации на ВМ через серийную консоль и задайте для него локальный пароль:
sudo useradd <имя_пользователя> && sudo passwd <имя_пользователя>
Где
<имя_пользователя>
— имя создаваемого пользователя, напримерyc-user
.По запросу системы введите пароль пользователя, затем подтвердите его.
Результат:
passwd: password updated successfully
- Отключитесь от ВМ. Для этого введите команду
logout
.
-
Получите список ВМ в каталоге по умолчанию:
yc compute instance list
Результат:
+----------------------+-----------------+---------------+---------+----------------------+ | ID | NAME | ZONE ID | STATUS | DESCRIPTION | +----------------------+-----------------+---------------+---------+----------------------+ | fhm0b28lgfp4******** | first-instance | ru-central1-a | RUNNING | my first vm via CLI | | fhm9gk85nj7g******** | second-instance | ru-central1-a | RUNNING | my second vm via CLI | +----------------------+-----------------+---------------+---------+----------------------+
-
Включите для ВМ авторизацию по OS Login при подключении к серийной консоли, указав имя ВМ:
yc compute instance update \ --name <имя_ВМ> \ --serial-port-settings ssh-authorization=OS_LOGIN
Результат:
done (6s) id: fhm0b28lgfp4******** folder_id: b1g9d2k0itu4******** created_at: "2024-03-28T19:53:23Z" name: first-instance zone_id: ru-central1-a platform_id: standard-v3 resources: memory: "1073741824" cores: "2" core_fraction: "20" status: RUNNING metadata_options: gce_http_endpoint: ENABLED aws_v1_http_endpoint: ENABLED gce_http_token: ENABLED aws_v1_http_token: DISABLED boot_disk: mode: READ_WRITE device_name: epdu3ce920e7******** auto_delete: true disk_id: epdu3ce920e7******** network_interfaces: - index: "0" mac_address: d0:0d:5c:**:**:** subnet_id: e2luhnr3rhf8******** primary_v4_address: address: 192.168.1.21 one_to_one_nat: address: 51.250.***.*** ip_version: IPV4 security_group_ids: - enpjauvetqfb******** serial_port_settings: ssh_authorization: OS_LOGIN gpu_settings: {} fqdn: sample-vm.ru-central1.internal scheduling_policy: preemptible: true network_settings: type: STANDARD placement_policy: {}
-
Экспортируйте сертификат OS Login, указав идентификатор вашей организации:
yc compute ssh certificate export \ --organization-id <идентификатор_организации>
Результат:
Identity: /home/myuser/.ssh/yc-organization-id-bpfaidqca8vd********-yid-orgusername Certificate: /home/myuser/.ssh/yc-organization-id-bpfaidqca8vd********-yid-orgusername-cert.pub
Экспортированный сертификат действителен один час.
-
Подключитесь к ВМ.
Пример команды подключения:
ssh -t -p 9600 -i <путь_к_SSH-сертификату> <идентификатор_ВМ>.<логин_пользователя_OS_Login>@serialssh.cloud.yandex.net
Где:
-
<путь_к_SSH-сертификату>
— путь к экспортированному SSH-сертификату, значение поляIdentity
. -
<идентификатор_ВМ>
— идентификатор виртуальной машины, к серийной консоли которой требуется подключиться. -
<имя_пользователя_OS_Login>
— идентификатор пользователя OS Login в организации. Логин пользователя OS Login указан в конце имени экспортированного сертификата после идентификатора организации.Также логин пользователя можно получить с помощью команды
yc organization-manager os-login profile list
Yandex Cloud CLI или в интерфейсе Cloud Center в профиле пользователя на вкладке Профили OS Login.Примечание
Просматривать список профилей OS Login могут пользователи, которым назначена роль
organization-manager.osLogins.viewer
или выше на организацию.
Пример для пользователя с логином
yid-orgusername
и ВМ с идентификаторомepd22a2tj3gd********
:ssh -p 9600 -i /home/myuser/.ssh/yc-organization-id-bpfaidqca8vd********-yid-orgusername epd22a2tj3gd********.yid-orgusername@serialssh.cloud.yandex.net
При подключении система может запросить логин и пароль для аутентификации на ВМ. Введите созданные ранее логин и пароль, после чего вы получите доступ к серийной консоли.
-
Вы также можете подключиться к серийной консоли с помощью SSH-ключей для других пользователей.
Решение проблем
- Если после подключения к серийной консоли на экране ничего не отображается:
- Нажмите на клавиатуре клавишу Enter.
- Перезапустите ВМ (для ВМ, созданных до 22 февраля 2019 года).
- Если при подключении с помощью SSH-ключа возникает ошибка
Warning: remote host identification has changed!
, выполните командуssh-keygen -R <IP-адрес_ВМ>
. - Если при подключении с помощью SSH-сертификата возникает ошибка
Permission denied (publickey).
, убедитесь, что для ВМ включена авторизация по OS Login при подключении к серийной консоли, а сертификат — не просрочен. При необходимости включите для ВМ авторизацию по OS Login при подключении к серийной консоли или повторно экспортируйте SSH-сертификат.
Отключиться от серийной консоли
Чтобы отключиться от серийной консоли:
- Нажмите на клавиатуре клавишу Enter.
- Введите последовательно символы
~.
.