[Документация Yandex Cloud](../../../index.md) > [Yandex BareMetal](../../index.md) > [Пошаговые инструкции](../index.md) > Серверы > Добавить новый SSH-ключ пользователя

# Добавить новый SSH-ключ пользователя

Публичный [SSH-ключ](../../../glossary/ssh-keygen.md) root-пользователя задается при [аренде](server-lease.md) сервера BareMetal. Чтобы подключаться к серверу по SSH, пользователь должен обладать закрытой частью SSH-ключа.

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

## Создайте новую пару SSH-ключей {#create-new-key}

Прежде чем приступать к добавлению ключа на сервер BareMetal, создайте на вашем локальном компьютере новую пару SSH-ключей для доступа root-пользователя на сервер по SSH:

{% list tabs group=operating_system %}

- 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 %}

## Добавьте новый ключ в профиль root-пользователя {#add-the-new-key}

В зависимости от ситуации, вы можете добавить новый SSH-ключ несколькими способами.

{% note tip %}

Чтобы в KVM-консоли вставить текст из буфера обмена, воспользуйтесь полем **Paste text here** в правом верхнем углу.

{% endnote %}

{% list tabs %}

- Если сохранился доступ к серверу по паролю

  Если у вас сохранилась возможность подключаться к серверу от имени root-пользователя с помощью пароля, сгенерированного при аренде сервера, вы можете добавить новый публичный SSH-ключ, не прибегая к Rescue-CD:

  1. [Подключитесь](server-kvm.md) к KVM-консоли сервера BareMetal.
  1. В терминале KVM-консоли аутентифицируйтесь на сервере от имени root-пользователя:

      * В строке с запросом имени пользователя введите `root` и нажмите **ENTER**:

          ```bash
          my-server login: root
          ```
      * В появившейся строке `Password:` введите пароль root-пользователя, сгенерированный при аренде сервера.
  1. Перейдите в директорию, в которой хранятся SSH-ключи root-пользователя. Например:
     
     ```bash
     cd /root/.ssh/
     ```
  1. Замените содержимое файла `authorized_keys`, добавив в него новый публичный SSH-ключ:
     
     ```bash
     echo "<новый_SSH-ключ>" | tee authorized_keys
     ```
     
     Если вы хотите добавить новый ключ, не удаляя старый, передайте в команду `tee` параметр `-a`:
     
     ```bash
     echo "<новый_SSH-ключ>" | tee -a authorized_keys
     ```
     
     {% note info %}
     
     На этом этапе вы также можете [изменить](reset-password.md) пароль root-пользователя для доступа на сервер или изменить любые другие настройки операционной системы сервера, которые могут препятствовать корректной загрузке или подключению к нему, а также провести необходимые работы по диагностике и исправлению ошибок.
     
     {% endnote %}
  1. Выйдите из профиля root-пользователя в KVM-консоли:

      ```bash
      logout
      ```
  1. С вашего локального компьютера подключитесь к серверу с новым SSH-ключом, чтобы убедиться, что он работает:
     
     ```bash
     ssh root@<публичный_IP-адрес_сервера>
     ```

- Если нет доступа к серверу

  Если у вас нет возможности подключиться к серверу с помощью пароля root-пользователя, сгенерированного при аренде сервера, вы можете добавить новый публичный SSH-ключ root-пользователя при помощи загрузочного CD-образа Rescue-CD. Дальнейшие действия необходимо выполнять в [KVM-консоли](server-kvm.md).

  Чтобы добавить новый публичный SSH-ключ root-пользователя или изменить другие настройки сервера BareMetal:

  1. [Запустите](rescue-boot.md#boot-up) сервер с CD-образа Rescue-CD.
     
     В основном меню SystemRescue выберите опцию **Boot SystemRescue using default options**, нажмите **ENTER** и дождитесь загрузки операционной системы SystemRescue.
  1. Посмотрите информацию об устройствах хранения (дисках и созданных на них разделах) сервера:
     
     ```bash
     fdisk -l
     ```
     
     Результат:
     
     ```text
     Disk /dev/sda: 838.36 GiB, 900185481216 bytes, 1758174768 sectors
     Disk model: SAMSUNG MZ7GE900
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/0 size (minimum/optimal): 512 bytes / 512 bytes
     Disklabel type: gpt
     Disk identifier: D79F5407-DEEC-4A1D-983F-3AC5********
     
     Device      Start      End         Sectors      Size  Type
     /dev/sda1   2048       614399      612352       299M  BIOS boot
     /dev/sda2   614400     21585919    20971520     10G   Linux filesystem
     /dev/sda3   21585920   34168831    12582912     6G    Linux filesystem
     /dev/sda4   34168832   1732861951  1698693120   810G  Linux filesystem
     
     
     Disk /dev/sdb: 838.36 GiB, 900185481216 bytes, 1758174768 sectors
     Disk model: SAMSUNG MZ7GE900
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/0 size (minimum/optimal): 512 bytes / 512 bytes
     Disklabel type: gpt
     Disk identifier: CDZACB4C-1618-4BAF-A6BB-D2B9********
     
     Device      Start      End         Sectors      Size  Type
     /dev/sdb1   2048       614399      612352       299M  BIOS boot
     /dev/sdb2   614400     21585919    20971520     10G   Linux filesystem
     /dev/sdb3   21585920   34168831    12582912     6G    Linux filesystem
     /dev/sdb4   34168832   1732861951  1698693120   810G  Linux filesystem
     
     Disk /dev/md127: 6 GiB, 6438256640 bytes, 12574720 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/0 size (minimum/optimal): 512 bytes / 512 bytes
     
     Disk /dev/md126: 9.99 GiB, 10729029632 bytes, 20955136 sectors = 512 bytes
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/0 size (minimum/optimal): 512 bytes / 512 bytes
     
     Disk /dev/md125: 809.88 GiB, 869596659712 bytes, 1698430976 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/0 size (minimum/optimal): 512 bytes / 512 bytes
     
     Disk /dev/loop: 824.97 MiB, 865046528 bytes, 1689544 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     ```
     
     В примере выше утилита `fdisk` вывела информацию о физических дисках (`/dev/sda` и `/dev/sdb`) и их разделах, а также о разделах в созданном на сервере RAID-массиве (`/dev/md127`, `/dev/md126` и `/dev/md125`).
     
     Диски `/dev/sda` и `/dev/sdb` используются в RAID-массиве, корневая файловая система ОС сервера расположена в разделе `/dev/md125` размером `809.88 GiB`. Этот раздел и необходимо смонтировать.
  1. Смонтируйте раздел с корневой файловой системой ОС сервера BareMetal:
     
     ```bash
     mount /dev/md125 /mnt
     ```
  1. Создайте новую среду оболочки ОС SystemRescue с окружением в смонтированной ранее файловой системе ОС сервера BareMetal:
     
     ```bash
     chroot /mnt /bin/bash
     ```
  1. Перейдите в директорию, в которой хранятся SSH-ключи root-пользователя. Например:
     
     ```bash
     cd /root/.ssh/
     ```
  1. Замените содержимое файла `authorized_keys`, добавив в него новый публичный SSH-ключ:
     
     ```bash
     echo "<новый_SSH-ключ>" | tee authorized_keys
     ```
     
     Если вы хотите добавить новый ключ, не удаляя старый, передайте в команду `tee` параметр `-a`:
     
     ```bash
     echo "<новый_SSH-ключ>" | tee -a authorized_keys
     ```
     
     {% note info %}
     
     На этом этапе вы также можете [изменить](reset-password.md) пароль root-пользователя для доступа на сервер или изменить любые другие настройки операционной системы сервера, которые могут препятствовать корректной загрузке или подключению к нему, а также провести необходимые работы по диагностике и исправлению ошибок.
     
     {% endnote %}
  1. Выполнив все необходимые действия в файловой системе сервера, выйдите из созданного окружения:
     
     ```bash
     exit
     ```
  1. Отмонтируйте файловую систему сервера BareMetal:
     
     ```bash
     umount /dev/md125 /mnt
     ```
     
     Результат:
     
     ```text
     umount: /mnt: not mounted.
     ```
  1. Отключите виртуальный CD-дисковод в KVM-консоли:
     
     1. В окне KVM-консоли в верхнем меню выберите **Media** → **Virtual Media Wizard...** или нажмите на значок с изображением CD-диска.
     1. В открывшемся окне в секции **CD/DVD Media1** нажмите кнопку **Disconnect**.
     1. Нажмите **Close**.
  1. Перезапустите сервер:
     
     ```bash
     reboot
     ```
  1. С вашего локального компьютера подключитесь к серверу с новым SSH-ключом, чтобы убедиться, что он работает:
     
     ```bash
     ssh root@<публичный_IP-адрес_сервера>
     ```

{% endlist %}

#### Полезные ссылки {#see-also}

* [Воспользоваться диском восстановления и диагностики Rescue-CD](rescue-boot.md)
* [Сбросить пароль root-пользователя на сервере](reset-password.md)
* [Восстановить загрузчик ОС](restore-grub.md)
* [Заменить диск в RAID-массиве](switch-raid-member.md)