Создаём ключ для подключения по SSH на базе операционной системы Debian
prolinux
Опубликован: | 2024-02-12T02:38:33.004219Z |
Отредактирован: | 2024-02-12T02:38:33.004219Z |
Статус: | публичный |
Как известно, 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.
Как видно на снимке экрана, программа предложила ввести имя файла, при этом в скобках показала адрес и имя файла по-умолчанию, этот вариант меня полностью устроит. Ничего не ввожу, а просто жму enter
. После этого программа запрашивает ввод пароля.
Пароль, если он необходим, нужно придумать. Если ключ будет храниться на машине с публичным доступом и потенциально может быть украден злоумышленниками, то от пароля не стоит отказываться, в иных случаях пароль для ключа можно и не задавать, а просто нажать enter
. Я привык задавать пароль. Ввожу желаемый пароль и жму enter
опять.
Программа запросила повторный ввод этого же пароля. Следует обратить внимание, что при вводе пароль на терминале не отображается - обычная защита от навязчивого наблюдателя за спиной. Ввожу желаемый пароль повторно и опять жму enter
.
Всё, ключ создан, программа указала в своём выводе, где и под каким именем хранятся приватная и публичная части ключа. Давайте посмотрим на выхлоп ls.
$ ls .ssh/
Мы видим два файла с одинаковым именем, у второго файла имеется расширение .pub
- это публичная часть ключа, именно её нужно скопировать на SSH-сервер с помощью ssh-copy-id.
Копируем ключ на github.com
Безопасное подключение по протоколу SSH используют все популярные и доступные ныне для широкого круга пользователей Git-сервера. В своей обычной практике я пользуюсь github.com
, и чтобы иметь возможность взаимодействовать с Git-сервером по SSH, мне необходимо скопировать публичную часть только что созданного ключа на сервер. Для этого вывожу содержимое только что созданного файла id_ed25519
в терминал.
$ cat ~/.ssh/id_ed25519.pub
Выделяю мышкой полученный выхлоп, копирую его в буфер обмена. Иду на github.com
в самом обычном браузере, вхожу в свой аккаунт и нахожу ссылку "Settings".
На вкладке "SSH and GPG keys" нахожу зелёную кнопку с меткой "New SSH key", жму её.
В итоге оказываюсь на странице с формой. Заполняю эту форму, ввожу произвольное, желаемое имя ключа, в моём случае это будет home-jazz
, - оно может быть любым по желанию пользователя. Выбираю "Key type", а в поле "Key" ввожу из буфера обмена скопированную только что публичную часть ключа.
Жму зелёную кнопку "Add SSH key", и всё...
Ключ создан, с этого момента к серверу github я могу подключаться по SSH.
Заключение
Как видно из продемонстрированных действий, создать ключ для безопасного подключения по протоколу SSH к серверу сети достаточно несложно, для этого нужно иметь терминал, правильно установленные соответствующие программы и навык работы с клавиатурой.
Как всегда, вопросы мне можно задать в комментариях, синяя кнопка ниже работает, кроме этого, на сайте есть удобные приватные сообщения, в этом случае ваш вопрос никто, кроме меня, не увидит.
Метки: | linux, debian, ssh-keygen, ssh, ssh-copy-id, cat, ls, ed25519 |