---
title: 'Создать и разместить SSH-ключ на облачном сервере'
sidebar_label: 'Создать и разместить SSH-ключ'
sidebar_position: 2
description: 'Как создать пару SSH-ключей, разместить публичный SSH-ключ на облачном сервере и как работают SSH-ключи для проекта и сервисного пользователя'
---

import {CustomTable} from 'docs-kit/components'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

# Создать и разместить SSH-ключ на облачном сервере

SSH-ключи можно использовать для безопасного [подключения к серверу](/cloud-servers/manage/connect-to-server.mdx) по зашифрованному протоколу SSH. Это пара ключей: приватный ключ хранится на локальном компьютере, а публичный размещается на сервере.

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

Можно использовать SSH-ключи типов еd25519, rsa, ecdsa и dsa. Подробнее об [SSH-ключах для пользователя](#ssh-keys-for-user).

1. [Создайте пару SSH-ключей](#create-ssh-keys).

2. Опционально: [добавьте публичный SSH-ключ в профиль пользователя](#add-public-ssh-key-to-profile).

3. [Разместите публичный SSH-ключ на облачном сервере](#place-public-ssh-key).

## 1. Создать пару SSH-ключей \{#create-ssh-keys}

Создать SSH-ключи можно двумя способами:

* [средствами ОС](#create-ssh-keys-in-os);
* с помощью [OpenStack CLI](#create-ssh-keys-via-openstack).

### Создать пару SSH-ключей средствами ОС \{#create-ssh-keys-in-os}

<Tabs queryString="create-ssh-keys-in-os">
  <TabItem value="unix" default>
    <TabItemLabel>
      Linux/macOS
    </TabItemLabel>

    1. Откройте CLI.

    2. Сгенерируйте пару SSH-ключей:

       ```bash
       ssh-keygen -t <key_type>
       ```

       Укажите `<key_type>` — тип SSH-ключа: `еd25519`, `rsa`, `ecdsa` или `dsa`

    3. Появится сообщение о выборе директории для хранения пары ключей — пример для RSA-ключа:

       ```bash
       Enter file in which to save the key (~/.ssh/id_rsa):
       ```

       Чтобы оставить директорию для хранения ключей по умолчанию, нажмите **Enter**. Если вы хотите выбрать другую директорию, введите ее в формате `/path/to/id_rsa` и нажмите **Enter**.

    4. Опционально: введите кодовую фразу для дополнительной защиты, повторите ее и нажмите **Enter**:

       ```bash
       Enter passphrase (empty for no passphrase):
       Enter same passphrase again:
       ```

    5. Дождитесь сообщения о том, что ключи сгенерированы. Будет создано два файла: `id_rsa` (приватный ключ) и `id_rsa.pub` (публичный ключ). В терминале появится отпечаток ключа и его изображение:

       ```bash
       Your identification has been saved in ~/.ssh/id_rsa
       Your public key has been saved in ~/.ssh/id_rsa.pub
       The key fingerprint is:
       The key's randomart image is:
       ```

    6. Выведите публичный SSH-ключ:

       ```bash
       cat <path>
       ```

       Укажите `<path>` — полный путь до публичного ключа, который вы указали на шаге 3, например `~/.ssh/id_rsa.pub`.
  </TabItem>

  <TabItem value="windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. Установите [PuTTY](https://putty.org.ru/).

    2. Откройте приложение PuTTYgen.

    3. В поле **Parameters** → **Type of key to generate** выберите тип ключа RSA.

    4. Нажмите **Generate**.

    5. Перемещайте курсор в окне PuTTYgen, пока не будет создана пара ключей.

    6. После создания ключей нажмите **Save public key** и **Save private key**.

    7. Укажите путь для хранения ключей.

    8. Опционально: в поле **Key passphrase** введите кодовую фразу для дополнительной защиты.

    9. Скопируйте публичный SSH-ключ.
  </TabItem>
</Tabs>

### Создать пару SSH-ключей через OpenStack CLI \{#create-ssh-keys-via-openstack}

SSH-ключ будет доступен только для одного сервисного пользователя, проекта и пула, для которых вы [настроили авторизацию в OpenStack API](/cloud-servers/tools/openstack-cli/configure-openstack-cli.mdx#configure-openstack-in-os).

При генерации SSH-ключей через OpenStack CLI публичный ключ автоматически добавляется в профиль пользователя.

1. [Откройте OpenStack CLI](/cloud-servers/tools/openstack-cli/).

2. Сгенерируйте пару SSH-ключей:

   ```bash
   openstack keypair create <key_name> --private-key <file_for_key>
   ```

   Укажите:

   * `<key_name>` — имя ключа;
   * `<file_for_key>` — файл, в котором сохранится приватный SSH-ключ на локальном компьютере.

## 2. Опционально: добавить публичный SSH-ключ в профиль пользователя \{#add-public-ssh-key-to-profile}

Публичный SSH-ключ можно добавить в свой профиль или в профиль другого пользователя. Затем [разместить ключ на сервере](#place-public-ssh-key) при создании или уже на существующем сервере.

Ключ будет доступен во всех проектах, в которые добавлен пользователь.

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

<Tabs queryString="add-public-ssh-key-to-profile">
  <TabItem value="own-profile" default>
    <TabItemLabel>
      В свой профиль
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/profile/access/ssh-keys) в правом верхнем углу откройте меню (номер аккаунта) и выберите **Профиль**.

    2. Перейдите в раздел **Доступ**.

    3. Откройте вкладку **SSH-ключи**.

    4. Нажмите **Добавить ключ**.

    5. Введите имя ключа.

    6. Вставьте публичный SSH-ключ в формате OpenSSH.

    7. Нажмите **Добавить**.
  </TabItem>

  <TabItem value="other-user">
    <TabItemLabel>
      В профиль другого пользователя
    </TabItemLabel>

    Используйте подраздел [Добавить SSH-ключ](/access-control/manage/edit-user-data-or-role.mdx#add-ssh-key) инструкции Изменить данные или разрешения пользователя.
    Добавлять ключи другим пользователям может только [Владелец аккаунта](/access-control/user-types.mdx#account-owner) и пользователь с ролью [`iam.admin`](/access-control/role-reference.mdx#iam-admin).

    Ключ будет доступен во всех проектах, в которые добавлен пользователь.
  </TabItem>
</Tabs>

## 3. Разместить публичный SSH-ключ на облачном сервере \{#place-public-ssh-key}

Разместить публичный SSH-ключ можно при [создании облачного сервера](/cloud-servers/create/create-server.mdx) или на существующем сервере.

Для доступа к облачному серверу по SSH нужно добавить публичный SSH-ключ в файл `~/.ssh/authorized_keys` на сервере. Можно добавить несколько ключей, например, если нужен доступ нескольким пользователям.

Публичные SSH-ключи на существующем сервере можно разместить с помощью утилиты или вручную.

<Tabs queryString="place-public-ssh-key">
  <TabItem value="ssh-copy-id-command">
    <TabItemLabel>
      Через утилиту
    </TabItemLabel>

    Утилита добавляет публичный SSH-ключ в конец файла `~/.ssh/authorized_keys`. Используемая команда создает директорию и файл, если они еще не созданы.

    <Tabs queryString="place-ssh-key-via-utility">
      <TabItem value="unix" default>
        <TabItemLabel>
          Из Linux/macOS
        </TabItemLabel>

        1. Откройте CLI на локальном компьютере.

        2. Скопируйте публичный SSH-ключ на облачный сервер:

           ```bash
           ssh-copy-id -i <path> <username>@<ip_address>
           ```

           Укажите:

           * `<path>` — полный путь до публичного ключа на локальном компьютере, например `~/.ssh/id_rsa.pub`;
           * `<username>` — имя пользователя;
           * `<ip_address>` ― публичный IP-адрес сервера.

        3. Введите пароль пользователя.
      </TabItem>

      <TabItem value="windows">
        <TabItemLabel>
          Из Windows
        </TabItemLabel>

        1. Откройте CLI на локальном компьютере.

        2. Скопируйте публичный SSH-ключ на облачный сервер:

           ```bash
           scp <local_path> <username>@<ip_address>:<server_path>
           ```

           Укажите:

           * `<local_path>` — полный путь до публичного ключа на локальном компьютере;
           * `<username>` — имя пользователя;
           * `<ip_address>` — публичный IP-адрес сервера;
           * `<server_path>` — путь для хранения публичного ключа на сервере, например `C:\Users\username\.ssh\authorized_keys`.
      </TabItem>
    </Tabs>
  </TabItem>

  <TabItem value="manually">
    <TabItemLabel>
      Вручную
    </TabItemLabel>

    1. Откройте файл с публичным SSH-ключом на локальном компьютере:

       <Tabs queryString="open-ssh-manually">
         <TabItem value="unix" default>
           <TabItemLabel>
             Linux/macOS
           </TabItemLabel>

           ```bash
           cat <path>
           ```

           Укажите `<path>` — полный путь до публичного ключа на локальном компьютере, например `~/.ssh/id_rsa.pub`.
         </TabItem>

         <TabItem value="windows">
           <TabItemLabel>
             Windows
           </TabItemLabel>

           ```bash
           type <path>
           ```

           Укажите `<path>` — полный путь до публичного ключа на локальном компьютере, например `C:\Users\username\.ssh\id_rsa.pub`.
         </TabItem>
       </Tabs>

    2. Скопируйте значение публичного SSH-ключа.

    3. [Подключитесь к серверу](/cloud-servers/manage/connect-to-server.mdx).

    4. Перейдите в директорию `.ssh`:

       ```bash
       cd .ssh
       ```

    5. Создайте файл `authorized_keys`:

       ```bash
       touch authorized_keys
       ```

    6. Добавьте в файл `authorized_keys` публичный SSH-ключ:

       ```bash
       echo <public_ssh_key> >> ~/.ssh/authorized_keys
       ```

       Укажите `<public_ssh_key>` — публичный SSH-ключ, который вы скопировали на шаге 2. Начинается с `ssh-rsa`.

    7. Настройте права доступа:

       ```bash
       chmod 700 ~/.ssh
       chmod 600 ~/.ssh/authorized_keys``
       ```
  </TabItem>
</Tabs>

## SSH-ключи для пользователя \{#ssh-keys-for-user}

<CustomTable>
  <table data-sticky>
    <tbody>
      <tr>
        <th>Как [добавить ключ в профиль пользователя](#add-public-ssh-key-to-profile)</th>

        <td>
          <ul>
            <li>Себе: в панели управления в правом верхнем углу откройте меню (номер аккаунта) → **Профиль** → раздел **Доступ** → вкладка **SSH-ключи**; </li>
            <li>другому пользователю: в панели управления в верхнем меню нажмите **IAM** → раздел **Пользователи** или **Сервисные пользователи** → страница пользователя; </li>
            <li>добавится автоматически при [создании SSH-ключей](#create-ssh-keys) через OpenStack CLI (команда `openstack keypair create`);</li>
            <li>через API;</li>
            <li>через Terraform;</li>
            <li>через selvpc CLI</li>
          </ul>
        </td>
      </tr>

      <tr>
        <th>Как разместить на облачном сервере при [создании сервера](/cloud-servers/create/create-server.mdx)</th>

        <td>
          <ul>
            <li>Через OpenStack CLI (команда `openstack server create`);</li>
            <li>через API;</li>
            <li>через Terraform</li>
          </ul>
        </td>
      </tr>

      <tr>
        <th>Для каких пользователей доступен</th>
        <td>Для одного пользователя любого типа</td>
      </tr>

      <tr>
        <th>В каких проектах доступен</th>
        <td>Во всех проектах, в которые добавлен пользователь</td>
      </tr>

      <tr>
        <th>В каких пулах доступен</th>

        <td>
          <ul>
            <li>Доступен во всех пулах, если был добавлен в панели управления в разделе <b>Аккаунт</b> → <b>Пользователи</b> → вкладка с нужным типом пользователей → страница пользователя;</li>
            <li>доступен только в тех пулах, в которые был добавлен через OpenStack CLI, API, Terraform, selvpc CLI</li>
          </ul>
        </td>
      </tr>

      <tr>
        <th>Где можно посмотреть список ключей</th>

        <td>
          <ul>
            <li>Своих: в панели управления в правом верхнем углу откройте меню (номер аккаунта) → **Профиль** → раздел **Доступ** → вкладка **SSH-ключи**;</li>
            <li>других пользователей: в панели управления в верхнем меню нажмите **IAM** → раздел **Пользователи** или **Сервисные пользователи** → страница пользователя;</li>
            <li>через OpenStack CLI (команда `openstack keypair list`);</li>
            <li>через API;</li>
            <li>через Terraform;</li>
            <li>через selvpc CLI</li>
          </ul>
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

<Formbricks />
