На сервере Debian включим аутентификацию по ключу SSH. Зачем это нужно?
- Во-первых, аутентификация по SSH-ключу сложнее требует больше информации
- Пароль можно подобрать брутфорсом
- Для аутентификации по ключу можно (и нужно!) также задать пароль
- Если у вас украдут компьютер с приватным ключом, то достаточно на сервере почистить
authorized_keys
Так что если вы где-то в облаке приобрели себе сервер и получили root с паролем, заведите себе отдельного пользователя с правами sudo, разрешите ему ходить по SSH-ключу и закройте вход на сервер по паролю. Под root вы всегда сможете войти через KVM консоль сервера.
Как создать ключи SSH в Windows?
Как это делать в Linux вы нагуглите, я сегодня буду это делать в Windows. Воспользуюсь утилитой puttygen.exe от авторов PuTTY. Скачиваем и запускаем утилиту.

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

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

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

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

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

Создадим папку и файл для публичного ключа.
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keysРедактируем authorized_keys любимым редактором и добавляем публичный ключ.

Специально ничего не закрашиваю для наглядности, т.к. работаю на тестовой виртуальной машине.
Далее работаем под рутом.
Установим правильные привилегии (в примере пользователь ovel):
chmod 400 /home/ovel/.ssh/authorized_keysЕсли вдруг вы создали файл от рута, меняем владельца:
chown ovel:ovel /home/ovel -RОтключить вход по паролю
Редактируем /etc/ssh/sshd_config.

Устанавливаем параметр:
PasswordAuthentication no
Перезагружаем службу:
service ssh restartПробуем подключиться к серверу по паролю:

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

Теперь можно войти по ключу, для этого в PuTTY в настройках Connection → SSH → Auth → Credentials → Private key file for authentication выбираем ранее сохранённый файл с приватным ключом (расширение PPK).
P.S.
Не завершайте текущий сеанс SSH в процессе применения настроек. Протестируйте что вы не потеряли доступ к серверу в отдельном окне PuTTy. Да-да, мы сегодня работаем из Windows!
P.P.S.
Чтобы удалить один из ключей, просто удалите его из authorized_keys.
