Перейти к содержанию

Генерация SSH-ключа

Хранилище SSH-ключей

Информация

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

Существуют два вида SSH-ключей:

  1. Публичный ключ - это открытый ключ, который можно передавать на удаленный сервер для идентификации. Он используется для шифрования данных, которые могут быть расшифрованы только с помощью соответствующего приватного ключа. Приватный ключ также может быть использован для шифрования данных, которые затем расшифровываются публичным ключом.

  2. Приватный ключ - это закрытый ключ, который должен храниться в секрете на локальной машине пользователя. Он используется для расшифровки данных, зашифрованных публичным ключом.

Для подключения к серверу с использованием SSH-ключей, необходимо создать пару ключей (публичный и приватный) на локальной машине, а затем скопировать публичный ключ на удаленный сервер. После этого будет возможно подключаться к серверу, не указывая пароль удалённого пользователя. Обычно приватный ключ генерируется с паролем, и этот пароль всё таки придётся указать при подключении.

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

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

  1. Активировать раскрывающееся меню напротив имени пользователя и выбрать пункт SSH keys:

  2. Нажать на кнопку Add new key:

  3. Создать публичный SSH-ключ:

  4. Добавить публичный ключ в хранилище:

    В поле User-frendly name можно ввести любое удобное название ключа. Это позволяет упростить управление ключами. Если поставить галочку напротив строки "Make it the default ssh key", то этот ключ будет использоваться для доступа к серверу по умолчанию.

  5. После ввода данных необходимо нажать на кнопку Add a new ssh key.

  6. Если данные внесены корректно, ключ будет добавлен в хранилище:

Генерация SSH-ключа для ОС Linux/MacOS

Создание SSH-ключа

  1. Подключиться к серверу по SSH

  2. Сгенерировать ключ SSH на локальном устройстве. Для этого нужно выполнить следующую команду в терминале:

    ssh-keygen -t rsa
    

    После запуска команды будет выведен запрос на выбор имени и расположения файла для ключа. По умолчанию он сохраняется в директории /.ssh/, а имя файла будет id_rsa.

    Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения. Ввод необязателен:

    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    

    В терминале появится отпечаток ключа и его изображение:

    The key's randomart image is:
    +---[RSA 3072]----+
    |      .     ..o+=|
    |     . .     o +.|
    |      o . o . o.o|
    |       = o . + oo|
    |      . S . + o o|
    |       . = ..o . |
    |        o ..=o+  |
    |         ..+=Xo+ |
    |         .E=*=Oo |
    +----[SHA256]-----+
    

    Для просмотра созданных SSH-ключей можно использовать команды:

    • cat ~/.ssh/id_rsa - просмотр приватного ключа;
    • cat ~/.ssh/id_rsa.pub - просмотр публичного ключа.

    Затем необходимо добавить публичный ключ на сервер. Для этого следует ввести следующую команду, заменив username на имя пользователя на сервере и ip_address на IP-адрес сервера:

    ssh-copy-id <username>@<ip_address>
    
    • <username> — имя пользователя;
    • <ip_address> — публичный IP-адрес сервера.

    После ввода команды система запросит пароль от учетной записи на сервере. После ввода пароля публичный ключ будет скопирован на сервер и добавлен в файл ~/.ssh/authorized_keys на сервере.

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

    ssh <username>@<ip_address>
    

Создание SSH-ключа во время переустановки ОС

SSH-ключ возможно добавить во время переустановки операционной системы. Для этого перед запуском установки новой ОС в Invapi во вкладке Reinstall необходимо заполнить поле Public ssh key:

Примечание

Пример запроса для переустановки ОС смотрите в API методов переустановки ОС

Генерация SSH-ключа для ОС Windows

Информация

Для генерации SSH-ключей в операционной системе Windows существует два метода: первый - с использованием клиента OpenSSH, и второй - с использованием клиента PuTTY. Ниже приведены инструкции для создания ключей с использованием обоих методов.

Клиент OpenSSH

Для генерации SSH-ключа с помощью клиента OpenSSH необходимо выполнить следующий алгоритм действий:

  1. Проверить наличие клиента OpenSSH. Для этого можно перейти по пути Параметры >> Приложения >> Дополнительные компоненты и ввести в строку поиска SSH:

    ![](./images/sshkey_open_ssh.png)
    

    Если клиент не установлен, то необходимо нажать на кнопку Добавить компонент и найти его, используя строку поиска. Затем нажать кнопку Установить.

    Проверить наличие клиента openSSH также можно с помощью командной строки:

    ssh -V
    
  2. Перейти в командную строку (комбинация клавиш Win+R >> ввод в строку cmd >> кнопка ОК) и ввести команду:

    ssh-keygen
    

    После запуска команды будет выведен запрос на выбор имени и расположения файла для ключа. По умолчанию он сохраняется в директории /.ssh/, а имя файла будет id_rsa.

    Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения. Ввод необязателен:

    Enter file in which to save the key (.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:```
    

    В терминале появится отпечаток ключа и его изображение:

    The key's randomart image is:
    +---[RSA 3072]----+
    |      .     ..o+=|
    |     . .     o +.|
    |      o . o . o.o|
    |       = o . + oo|
    |      . S . + o o|
    |       . = ..o . |
    |        o ..=o+  |
    |         ..+=Xo+ |
    |         .E=*=Oo |
    +----[SHA256]-----+
    
  3. Проверить наличие сгенерированных ключей - перейти в указанный ранее каталог на локальном устройстве. Например, C:\Users\user_name\.ssh:

PuTTY

  1. Скачать и установить клиент Putty на локальное устройство;

  2. Запустить файл puttygen.exe из меню Пуск.

  3. Выбрать тип ключа RSA и нажмите кнопку Generate:

  4. Несколько раз передвинуть мышь в случайных направлениях в окне Key Generation, это действие позволит создать случайный шум:

  5. Для защиты ключа с помощью пароля, следует ввести его в поле Key passphrase и повторить в Confirm passphrase. Если дополнительная защита не требуется, можно оставить эти поля пустыми:

    Для сохранения приватного ключа следует нажать кнопку Save private key.

    Нажать кнопку Save public key, чтобы сохранить публичный ключ на жесткий диск. Этот ключ будет использоваться для авторизации на сервере:

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

    scp </path/to/file> <username>@<ip_address></path/to/destination>
    
    • </path/to/file> — полный путь до публичного ключа на локальном компьютере;
    • <username> — имя пользователя;
    • <ip_address> — публичный IP-адрес сервера;
    • </path/to/destination> — путь для хранения публичного ключа на сервере.

Создание SSH-ключа во время переустановки ОС

SSH-ключ возможно добавить во время переустановки операционной системы. Для этого перед запуском установки новой ОС в Invapi во вкладке Reinstall необходимо заполнить поле Public ssh key:

Примечание

Пример запроса для переустановки ОС смотрите в API методов переустановки ОС

Удаление SSH-ключа

Для удаления SSH-ключа необходимо:

  • Открыть файл authorized_keys, который обычно находится в директории /.ssh/. Можно использовать текстовый редактор командной строки, например, Vim или Nano.
  • Найти строку с публичным ключом, который нужно удалить. Каждая строка соответствует одному ключу.
  • Удалить строку с нужным публичным ключом из файла authorized_keys.
  • Сохранить изменения и закрыть файл.
  • Перезапустить службу SSH на сервере, чтобы применить изменения. В большинстве случаев это можно сделать командой sudo service ssh restart или sudo systemctl restart sshd.
  • Проверить, что ключ больше не работает для входа по SSH.

Примечание

Если на локальном устройстве пользователя установлена OS WIndows, то также можно найти файл known_hosts и удалить в нем строку с соответствующим SSH-ключом.