[Документация Yandex Cloud](../../../index.md) > [Yandex Compute Cloud](../../index.md) > [Пошаговые инструкции](../index.md) > Образы > С предустановленным ПО > Работа с ВМ на базе публичного образа

# Работа с виртуальной машиной на базе публичного образа

## Подключение к виртуальной машине {#ways-to-connect}

Подключение к [виртуальной машине](../../concepts/vm.md) возможно по протоколу [SSH](../../../glossary/ssh-keygen.md) с помощью пары SSH-ключей, [по OS Login](../vm-connect/os-login.md) или с помощью [серийной консоли](../../concepts/serial-console.md).

### Подключение по SSH {#connect}

Этот способ подключения к виртуальной машине основан на использовании пары SSH-ключей: открытый ключ размещается на ВМ, закрытый ключ хранится у пользователя. Подключение с помощью пары ключей более безопасно, чем подключение по логину и паролю.

{% note info %}

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

{% endnote %}

#### Создание пары SSH-ключей {#creating-ssh-keys}

{% list tabs group=operating_system %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет [создана](../vm-create/create-linux-vm.md) ВМ.
  1. [Перейдите](https://kz.console.yandex.cloud/link/compute) в сервис **Compute Cloud**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/server.svg) **Виртуальные машины**.
  1. Нажмите **Создать виртуальную машину**.
  1. В блоке **Доступ** нажмите **Добавить ключ**.
  1. В открывшемся окне выберите `Сгенерировать ключ` и нажмите **Добавить**.
  
      При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку `/home/<имя_пользователя>/.ssh`. В ОС Windows распакуйте архив в папку `C:\Users\<имя_пользователя>/.ssh`. Дополнительно вводить открытый ключ в консоли управления не требуется.
  
      SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации [отключена](../../../organization/operations/os-login-access.md) возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
  
  {% cut "Предупреждение UNPROTECTED PRIVATE KEY FILE" %}
      
  В Unix-подобных системах после распаковки закрытого ключа в папку `.ssh` ему назначаются слишком высокие права. Из-за этого при подключении к ВМ возникает предупреждение `UNPROTECTED PRIVATE KEY FILE`. Чтобы сократить права, выполните команду:
  
  ```bash
  chmod 600 <путь_к_файлу_закрытого_ключа>
  ```
      
  {% endcut %}

- Linux/macOS {#linux-macos}

  1. Откройте терминал.
  1. Создайте новый ключ с помощью команды `ssh-keygen`:
  
      ```bash
      ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
      ```
  
      Вы можете передать в параметре `-C` пустую строку, чтобы не добавлять комментарий, или не указывать параметр `-C` вообще — в таком случае будет добавлен комментарий по умолчанию.
  
      После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением `.pub`, закрытый ключ — в файле без расширения.
  
      По умолчанию команда предлагает сохранить ключ под именем `id_ed25519` в директории `/home/<имя_пользователя>/.ssh`. Если в этой директории уже есть SSH-ключ с именем `id_ed25519`, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

- Windows 10/11 {#windows}

  Если у вас еще не установлен [OpenSSH](https://ru.wikipedia.org/wiki/OpenSSH), установите его по [инструкции](https://learn.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_install_firstuse).
  
  1. Запустите `cmd.exe` или `powershell.exe` (предварительно обновите PowerShell).
  1. Создайте новый ключ с помощью команды `ssh-keygen`:
  
      ```shell
      ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
      ```
  
      Вы можете передать в параметре `-C` пустую строку, чтобы не добавлять комментарий, или не указывать параметр `-C` вообще — в таком случае будет добавлен комментарий по умолчанию.
  
      После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением `.pub`, закрытый ключ — в файле без расширения.
  
      По умолчанию команда предлагает сохранить ключ под именем `id_ed25519` в папку `C:\Users\<имя_пользователя>/.ssh`. Если в этой директории уже есть SSH-ключ с именем `id_ed25519`, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

- Windows 7/8 {#windows7-8}

  Создайте ключи с помощью приложения PuTTY:
  
  1. [Скачайте](https://www.putty.org) и установите PuTTY.
  1. Добавьте папку с PuTTY в переменную `PATH`:
  
      1. Нажмите кнопку **Пуск** и в строке поиска Windows введите **Изменение системных переменных среды**.
      1. Справа снизу нажмите кнопку **Переменные среды...**.
      1. В открывшемся окне найдите параметр `PATH` и нажмите **Изменить**.
      1. Добавьте путь к папке в список.
      1. Нажмите кнопку **ОК**.
  
  1. Запустите приложение PuTTYgen.
  1. В качестве типа генерируемой пары выберите **EdDSA**. Нажмите **Generate** и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.
  
      ![ssh_generate_key](../../../_assets/compute/ssh-putty/ssh_generate_key.png)
  
  1. В поле **Key passphrase** введите надежный пароль. Повторно введите его в поле ниже.
  1. Нажмите кнопку **Save private key** и сохраните закрытый ключ. Никому не сообщайте ключевую фразу от него.
  1. Нажмите кнопку **Save public key** и сохраните открытый ключ в файле `<имя_ключа>.pub`.

{% endlist %}

#### Подключение с помощью SSH-ключей {#vm-connect}

После того как ВМ будет запущена (в статусе `RUNNING`), вы можете подключиться к ней по протоколу SSH. Для этого используйте утилиту `ssh` в Linux, macOS и Windows 10/11 или программу [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) в Windows 7/8.

Для подключения необходимо указать адрес ВМ. Это может быть ее [IP-адрес](../../../vpc/concepts/address.md) или [FQDN](../../../vpc/concepts/address.md#fqdn). Доступ по FQDN возможен из другой ВМ Yandex Cloud, если она подключена к той же [виртуальной сети](../../../vpc/concepts/network.md#network). IP-адрес для подключения можно узнать в [консоли управления](https://kz.console.yandex.cloud) на странице ВМ в блоке **Сеть**.

### Подключение по OS Login {#os-login-connect}

[OS Login](../../../organization/concepts/os-login.md) используется для предоставления пользователям доступа к ВМ по SSH c помощью IAM. Для доступа к ВМ по OS Login необходимо [включить](../../../organization/operations/os-login-access.md) доступ по OS Login на уровне организации.

Для подключения к ВМ по OS Login у пользователя должна быть роль `compute.osLogin` или `compute.osAdminLogin`, а также [роль](../../../resource-manager/security/index.md#resource-manager-auditor) `resource-manager.auditor` и выше на каталог, в котором размещена виртуальная машина. Виртуальная машина должна поддерживать OS Login на уровне операционной системы. Вы можете [создать](../vm-connect/os-login-create-vm.md) новую виртуальную машину с поддержкой OS Login или [настроить](../vm-connect/enable-os-login.md) доступ по OS Login для существующей ВМ.

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

К ВМ с включенным доступом по OS Login нельзя подключиться с SSH-ключом при помощи стандартного [SSH-клиента](../vm-connect/ssh.md#vm-connect).

## Пароли к предустановленному ПО {#logins-passwords}

В Cloud Marketplace кроме дистрибутивов операционных систем, доступны публичные образы с предустановленным программным обеспечением. Чтобы получить пароли для настройки предустановленного ПО в таких образах:

1. Подключитесь к ВМ.

1. Пароли к предустановленному ПО находятся в файле `/root/default_passwords.txt`. Файл доступен для чтения и редактирования только суперпользователю. Получите список паролей с помощью команды:

   ```bash
   sudo cat /root/default_passwords.txt
   ```

Если в публичном образе ВМ отсутствует предустановленное ПО, файла с паролями не будет.

## Использование протокола SSL {#ssl}

Чтобы использовать [SSL](../../../glossary/ssl-certificate.md), сгенерируйте SSL-сертификат и настройте веб-сервер для работы с ним.

Для [создания](../../../certificate-manager/operations/managed/cert-create.md) SSL-сертификата можно воспользоваться сервисом [Yandex Certificate Manager](../../../certificate-manager/index.md). Сертификат можно [экспортировать](../../../certificate-manager/operations/managed/cert-get-content.md) и использовать на веб-сервере.

## Фильтрация сетевого трафика {#network-filter}

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

Вы можете посмотреть список открытых портов для конкретной виртуальной машины при [подключении с помощью пары SSH-ключей](../vm-connect/ssh.md). Чтобы открыть дополнительные порты, воспользуйтесь утилитой `iptables`.

На уровне [облачной сети](../../../vpc/concepts/network.md#network) сетевой трафик фильтруется с помощью [групп безопасности](../../../vpc/concepts/security-groups.md). Чтобы разрешить определенный трафик для виртуальной машины на уровне сети, [настройте](../../../vpc/operations/security-group-add-rule.md) группу безопасности и [привяжите](../vm-control/vm-change-security-groups-set.md) ее к ВМ.

## Установка обновлений {#updates}

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