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

Аббревиатура SSH означает Secure Shell, что дословно переводится как «безопасная оболочка». SSH — это защищенный сетевой протокол с проверкой подлинности и шифрованием. Он используется для передачи файлов, управления сетью и удаленного доступа к операционной системе.

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

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

Что такое SSH-ключ

Определение «SSH-ключ» составное, так как на самом деле ключ состоит из пары — открытой и "закрытой". На узле администратора создаются и хранятся обе части ключа, а на сервера передаются только копия публичной части SSH-ключа.

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

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

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

Процесс генерации SSH-ключей в ОС на базе Linux очень прост. Далее рассмотрим генерацию ключа с параметрами по умолчанию т. е. тип ключа - RSA, длина ключа - 3072 бит:

  • выполняем команду ssh-keygen В процессе работы команда задаст несколько вопросов:

    • Enter file in which to save the key (/root/.ssh/id_rsa) - путь по которому сохранить сгенерированный ключ (в данном примере /root/.ssh/id_rsa), обычно не требуется редактировать.
    • Enter passphrase (empty for no passphrase): - возможность задать парольную фразу для ключа ( не поддерживается awctl), если оставить значение пустым то парольная фраза для ключа не будет установлена. Вывод команды:
    root@eefa63aa3ea5:/# ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa
    Your public key has been saved in /root/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:BEW2byds8PSauUgQkag/jJldb6zH+86Jux7qYVF7LuY root@eefa63aa3ea5
    The key's randomart image is:
    +---[RSA 3072]----+
    |     .o++        |
    |    . .+ .       |
    |   .  . = .      |
    |  .   .+ B .     |
    |   B .ooS O o    |
    |  + =  o+= *     |
    |     .o+= =      |
    |     ..*o* o     |
    |     .ooE**      |
    +----[SHA256]-----+
    root@eefa63aa3ea5:/# 
    

В результате работы команды в домашней директории пользователя будет создана директория .ssh в которую ( по умолчанию ) будут помещены сгенерированные открытая и закрытая часть ключа.

Следующий этап - доставить открытую часть ключа на те сервера к которым потребуется подключаться по ssh.

Копирование открытого ключа на сервера

Скопировать открытую часть ключа на удаленный сервер можно выполнить использую команду ssh-copy-id. Для того чтобы команда успешно отработала у пользователя уже должен быть доступ по ssh на целевой сервер с аутентификацией по паролю. Тогда вызов команды может выглядеть следующим образом:

ssh-copy-id <имя пользователя>@<адрес сервера>

Пример результата работы ssh-copy-id (в данном примере выполняется копирование открытой части ключа пользователя awbi на сервер 192.168.20.180):

ssh-copy-id awbi@192.168.20.180
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/awbi/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'awbi@192.168.20.180'"
and check to make sure that only the key(s) you wanted were added.

Готово теперь подключение к серверам с использованием ssh ключа без запроса пароля должно работать!