Аббревиатура 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
(в данном примере выполняется копирование открытой части ключа пользователя 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 ключа без запроса пароля должно работать!