Создаём ключ для подключения по SSH на базе операционной системы Debian

prolinux

Опубликован:  2024-02-12T02:38:33.004219Z
Отредактирован:  2024-02-12T02:38:33.004219Z
Статус:  публичный
12
0
0

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

Openssh в Debian

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

В операционной системе Debian клиентская и серверная части SSH разделены на два пакета:

  • openssh-client;

  • openssh-server.

Соответственно, в Debian на клиенте должен быть установлен пакет openssh-client, а на сервере - openssh-server. Поскольку оба пакета имеются в официальном хранилище пакетов, установить их достаточно несложно с помощью пакетного менеджера apt.

Создаём шифрованный ключ

В этой демонстрации все действия я буду выполнять на клиенте с Debian sid на борту, в моей операционной системе уже установлен пакет openssh-client.

$ sudo apt install openssh-client

В одном из предыдущих выпусков этого блога я рассказывал, как можно посмотреть состав любого установленного пакета при помощи пакетного менеджера dpkg. Так вот, в составе openssh-client в том числе есть и программа для создания шифрованных ключей - ssh-keygen - это утилита командной строки, для её использования потребуется терминал. В программу вшита справочная информация, посмотреть которую можно следующей командой:

$ ssh-keygen --help

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

$ ssh-keygen -t ed25519

Программа имеет интерактивный режим и после запуска запрашивает у пользователя дополнительную информацию:

  • имя файла, в котором будет храниться ключ;

  • пароль, с которым можно получить доступ к этому ключу.

Вот как выглядит мой терминал после запуска ssh-keygen.

ad5nrL2q3A.png

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

sJ83NgPSRQ.png

Пароль, если он необходим, нужно придумать. Если ключ будет храниться на машине с публичным доступом и потенциально может быть украден злоумышленниками, то от пароля не стоит отказываться, в иных случаях пароль для ключа можно и не задавать, а просто нажать enter. Я привык задавать пароль. Ввожу желаемый пароль и жму enter опять.

uSQQGW464g.png

Программа запросила повторный ввод этого же пароля. Следует обратить внимание, что при вводе пароль на терминале не отображается - обычная защита от навязчивого наблюдателя за спиной. Ввожу желаемый пароль повторно и опять жму enter.

EoI4LUilww.png

Всё, ключ создан, программа указала в своём выводе, где и под каким именем хранятся приватная и публичная части ключа. Давайте посмотрим на выхлоп ls.

$ ls .ssh/

whBVaBR9Ts.png

Мы видим два файла с одинаковым именем, у второго файла имеется расширение .pub - это публичная часть ключа, именно её нужно скопировать на SSH-сервер с помощью ssh-copy-id.

Копируем ключ на github.com

Безопасное подключение по протоколу SSH используют все популярные и доступные ныне для широкого круга пользователей Git-сервера. В своей обычной практике я пользуюсь github.com, и чтобы иметь возможность взаимодействовать с Git-сервером по SSH, мне необходимо скопировать публичную часть только что созданного ключа на сервер. Для этого вывожу содержимое только что созданного файла id_ed25519 в терминал.

$ cat ~/.ssh/id_ed25519.pub

KbLA3uEhZr.png

Выделяю мышкой полученный выхлоп, копирую его в буфер обмена. Иду на github.com в самом обычном браузере, вхожу в свой аккаунт и нахожу ссылку "Settings".

1ndZR4O2JC.png

На вкладке "SSH and GPG keys" нахожу зелёную кнопку с меткой "New SSH key", жму её.

dplLC7chLQ.png

В итоге оказываюсь на странице с формой. Заполняю эту форму, ввожу произвольное, желаемое имя ключа, в моём случае это будет home-jazz, - оно может быть любым по желанию пользователя. Выбираю "Key type", а в поле "Key" ввожу из буфера обмена скопированную только что публичную часть ключа.

yPoWCqpxu6.png

Жму зелёную кнопку "Add SSH key", и всё...

U0Ylh8MSNM.png

Ключ создан, с этого момента к серверу github я могу подключаться по SSH.

Заключение

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

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