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

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

В этой статье

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

Информация

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

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

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

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

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

Генерация 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-ключа во время переустановки Linux

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

Примечание

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

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

Информация

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

Клиент OpenSSH

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

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

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

    Проверить наличие клиента 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-ключа во время переустановки Windows

SSH-ключ возможно добавить во время переустановки операционной системы. Для этого перед запуском установки новой ОС в Invapi во вкладке Переустановка необходимо заполнить поле 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-ключом.