Настраиваем SSH аутентификацию по ключу

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

Основное отличие аутентификации по ключу перед парольной аутентификацией заключается в том, что сам секрет не находится на сервере. При использовании парольной аутентификации хеш пароля, в том или другом виде, присутствует на сервере. Этот факт дает основание к действиям по его похищению и дальнейшему эксплуатированию. Использование же ключевой пары этот риск «умножает на ноль». Cекрет, на основании которого сервер выполняет аутентификацию, не покидает клиентский терминал, а на самом сервере будет храниться лишь открытый ключ. Он будет служить для валидации действительно клиент обладает закрытым ключом или нет.

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

  1. Генерация ключевой пары
  2. Импортирование публичного ключа на Linux сервер и его конфигурирование
  3. Настройка Sudo для поддержки работы с SSH ключами

В качестве средства для генерации ключевой пары я буду использовать PuTTYgen. Эта утилита входит в состав клиента PuTTY который можно загрузить тут. Выбор именно этого софта обусловлен моей работой из-под Windows среды.

Генерация ключевой пары в PuTTYgen
Генерация ключевой пары в PuTTYgen

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

Следующая фаза будет состоять в передаче открытого ключа на сервер и последующей его привязке к конкретному пользователю. В принципе, передать файл можно 2-я способами — непосредственным копированием файла или через терминал. Я буду использовать второй способ, предварительно скопировав содержимое файла открытого ключа в буфер обмена.

На сервере создаем в каталоге /tmp новый файл и вставляем содержимое буфера обмена:

Копирование публичного SSH ключа на Linux сервер
Копирование публичного SSH ключа на Linux сервер

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

где,

/tmp/pub_key.pub — расположение файла с открытым ключем

aiadmin – имя каталога пользователя которому будет импортирован ключ

Для аутентификации с помощью ключа, в настройках PuTTY для по необходимо выбрать расположение его расположение:

Указание расположения закрытого ключа в PuTTY
Указание расположения закрытого ключа в PuTTY

Финальной фазой будет настройка Sudo для поддержки работы с SSH ключами. Дело в том, что без дополнительной конфигурации будет запрашиваться пароль вместо ключа. Исправить это поможет следующее выражение:

где aiadmin имя учетной записи.

На этом процесс перевода Linux сервера на  SSH аутентификацию по ключу закончен. В завершение, рекомендую отключить возможность парольного входа на SSH сервере. Для этого правим конфиг /etc/ssh/sshd_config выставляя параметр PasswordAuthentication в значение no. Для применения настроек необходимо выполнить sudo systemctl reload ssh.

Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.

Оставить комментарий

avatar
  Подписаться  
Уведомление о