Перейти к основному содержанию

Linux — аутентификация по SSH-ключу

Linux

На сервере Debian включим аутентификацию по ключу SSH. Зачем это нужно?

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

Так что если вы где-то в облаке приобрели себе сервер и получили root с паролем, заведите себе отдельного пользователя с правами sudo, разрешите ему ходить по SSH-ключу и закройте вход на сервер по паролю. Под root вы всегда сможете войти через KVM консоль сервера.

Как создать ключи SSH в Windows?

Как это делать в Linux вы нагуглите, я сегодня буду это делать в Windows. Воспользуюсь утилитой puttygen.exe от авторов PuTTY. Скачиваем и запускаем утилиту.

linux

Жмём Generate, предварительно установив параметры ключа, RSA 2048 подойдёт.

linux

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

linux

Ключ сгенерирован. Задаём парольную фразу в Key passphrase и повторяем её в Confirm passphrase. Конечно, можно и не задавать парольную фразу, но это не рекомендуется с точки зрения безопасности. Сохраняем приватный ключ себе на компьютер кнопкой Save private key в виде файла с расширением PPK. На всякий случай можете сохранить публичный ключ кнопкой Save public key, но он нам не пригодится, т.к. нам нужен ключ в другом формате, а именно тот, что отображается в блоке Key. Копируем его себе через буфер обмена.

linux

Вот такой публичный ключ нам нужен.

linux

Заходим на сервер под пользователем, для которого сгенерировали ключ. Находимся в домашней директории.

linux

Создадим папку и файл для публичного ключа.

mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys

Редактируем authorized_keys любимым редактором и добавляем публичный ключ.

linux

Специально ничего не закрашиваю для наглядности, т.к. работаю на тестовой виртуальной машине.

Далее работаем под рутом.

Установим правильные привилегии (в примере пользователь ovel):

chmod 400 /home/ovel/.ssh/authorized_keys

Если вдруг вы создали файл от рута, меняем владельца:

chown ovel:ovel /home/ovel -R

Отключить вход по паролю

Редактируем /etc/ssh/sshd_config.

linux

Устанавливаем параметр:

PasswordAuthentication no
linux

Перезагружаем службу:

service ssh restart

Пробуем подключиться к серверу по паролю:

linux

Не получается.

linux

Теперь можно войти по ключу, для этого в PuTTY в настройках Connection → SSH → Auth → Credentials → Private key file for authentication выбираем ранее сохранённый файл с приватным ключом (расширение PPK).

P.S.

Не завершайте текущий сеанс SSH в процессе применения настроек. Протестируйте что вы не потеряли доступ к серверу в отдельном окне PuTTy. Да-да, мы сегодня работаем из Windows!

P.P.S.

Чтобы удалить один из ключей, просто удалите его из authorized_keys.

sudo

Если нужно чтобы после входа юзера ovel по ключу при выполнении команды sudo не запрашивался пароль, добавляем в sudoers:

ovel ALL=(ALL) NOPASSWD: ALL

Теги

 

Похожие материалы

Kali Linux — разворачиваем на VirtualBox

Kali Linux — один из лучших инструментов для тестирования информационной безопасности компьютерных систем. Это дистрибутив операционной системы на базе Debian, в котором предустановлено более 600 программ тестирования проникновения.

Nessus — установка на Ubuntu

Понадобилось мне просканировать один хост на наличие уязвимостей. Нет ничего лучше для этих целей, чем сканер безопасноcти Nessus. Версия Essentials позволяет бесплатно просканировать до 16 IP адресов.

Теги