Как настроить аутентификацию через ключи SSH на сервере Linux (Debian)

SSH англ. Secure Shell — «безопасная оболочка» и цель этой публикации продемонстрировать настройку для безопасного соединения по протоколу SSH.

Прежде всего в вашей операционной системе должен быть установлен пакет openssh-server, и вероятнее всего он есть.

OpenSSH — это свободная реализация протокола Secure Shell, определённого рабочей группой IETF.

https://packages.debian.org/ru/stretch/openssh-server

SSH (Secure SHell) — это комплекс программ, позволяющих соединяться с удалёнными машинами по защищённому каналу и выполнять команды. Он создаёт шифрованное соединение между двумя ненадёжными с точки зрения безопасности хостами через незащищённую сеть.

https://packages.debian.org/ru/stretch/openssh-server

В этом пакете содержится серверная часть комплекса — sshd.

Итак, наша задача настроить беспарольный вход по SSH, SCP или SFTP на удаленный сервер под управлением Debian или Ubuntu. Начнем мы с создании ключей.

Если по каким то причинам у вас отсутствуют нужные пакеты , то можете осуществить установку следующими командами:

apt install openssh-client
apt install openssh-server

Подробнее об этом написано тут

Создание пары ключей RSA

Первым делом сгенерируйте на локальном компьютере (то есть на той машине с которой хотите подключиться к серверу) пару ключей SSH, введя следующую команду:

ssh-keygen

По умолчанию ssh-keygen создаёт 2048-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битный ключей).

Поэтому мы «докрутим» нашу консольную команду до следующего вида:

ssh-keygen -t rsa -b 4096

P.S. Как вариант рассмотрите алгоритм Ed25519

Эта команда сгенерирует ключи использующие метод цифрового алгоритма подписи (RSA). В процессе у вас спросят пароль. Просто нажмите Enter на запрос о создании ключа.

По умолчанию открытый ключ сохраняется в файл ~/.ssh/id_dsa.pub, в то время как секретный в ~/.ssh/id_dsa.

Подробный пример с описанием команд

ssh-keygen \
    -m PEM \
    -t rsa \
    -b 4096 \
    -C "myuser@myserver" \
    -f ~/.ssh/mykeys/myprivatekey \
    -N mypassphrase

ssh-keygen — программа, с помощью которой создаются ключи.

-m PEM — преобразование ключа в формат PEM.

-t rsa — тип создаваемого ключа; в данном случае создается ключ в формате RSA.

-b 4096 — количество битов в ключе; в данном случае ключ содержит 4096 битов.

-C «myuser@myserver» — комментарий, который будет добавлен в конец файла открытого ключа для идентификации. Обычно в качестве комментария используется адрес электронной почты.

-f ~/.ssh/mykeys/myprivatekey — имя файла закрытого ключа, если вы решили не использовать имя по умолчанию. В том же каталоге будет создан соответствующий файла открытого ключа с .pub в имени. Этот каталог должен существовать.

N mypassphrase — дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа.

Настоятельно рекомендуется добавлять парольную фразу в закрытый ключ. Если не защитить файл ключа парольной фразой, любой пользователь, у которого есть этот файл, сможет использовать его, чтобы войти на любой из серверов, на котором используется этот открытый ключ. Добавив парольную фразу, вы усилите защиту на случай, если другой пользователь получит доступ к файлу закрытого ключа. Это даст вам время, чтобы изменить ключи.

https://docs.microsoft.com/ru-ru/azure/virtual-machines/linux/create-ssh-keys-detailed

Копирование публичного ключа на сервер Debian/Ubuntu

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

Ваш закрытый ключ — id_rsa (не давайте его никому!), ваш открытый ключ — id_rsa.pub.

Копирование открытого ключа с использованием ssh-copy-id

Самым быстрым и простым способом копирования будет способ с использованием утилиты ssh-copy-id. Выполним копирование при помощи команды ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

Внимание! После выполнения операции проверьте права доступа файла authorized_keys (на удаленной машине, куда копировался ключ), чтобы только авторизованные пользователи имели права на чтение и запись. Если права установлены некорректно, измените их:

chmod 600 .ssh/authorized_keys

Ну вот и все! Теперь у вас есть возможность соединиться по SSH с удаленным сервером без ввода пароля. 🙂

@TODO — Отключить аутентификацию на сервере с помощью пароля.

А теперь поговорим о настройках.

Добавить комментарий