Немного о самих ключах:
SSH-ключи — пара защищенных шифрованием ключей (приватный и публичный), которые используются для авторизации при подключении к серверу по протоколу SSH. Для большей надежности и безопасности подключения SSH рекомендуется использовать SSH-ключи вместо пароля.
Для этого нам надо проделать несколько простых пунктов:
- Создать пару SSH-ключей — после создания приватный ключ хранится на компьютере, с которого выполняется подключение, а публичный ключ размещается на сервере;
- Разместите наш сгенерированный публичный ключ на сервере.
Создание SSH ключей с помощью Putty:
В составе программного комплекса Putty есть утилита для генерации ключей — Puttygen, именно ее мы будем использовать для генерации пары ключей
- После жмем на кнопку Generate:
3. Далее просто водим рандомно мышкой пока не будет сгенерирована пара ключей:
4. Готово, наш открытый (public key) и приватный ключ (private key) созданы и готовы к использованию:
Key passphrase - Возможность задать пароль на приватный ключа (private key) (рекомендую его установить)
Save public key - Кнопка сохранения публичного ключа (public key). Он размещается на удаленном сервере.
Save private key - Кнопка сохранения приватного ключа (private key). Ключ хранится у клиента и используется для подключения к серверу.
SSH-2 RSA 2048 - Кнопка сохранения публичного ключа (public key). Он размещается на удаленном сервере.
Ключи которые создает Puttygen не подходит для OpenSSH на сервере, поэтому содержимое открытого ключа (public key) копируем из окна "Public key for pasting into OpenSSH authorized_keys file:" значение которого выделено на скриншоте выше.
5. Сохраняйте публичный ключ в формате OpenSSH («Public key for pasting into OpenSSH authorized_keys file:») в файл, а так же два других с помощью кнопок Save public key и Save private key.
Настройка SSH на сервере для авторизации по ключам:
- Подключаемся на удаленный сервер через SSH с помощью Putty и вводим в консоли команды ниже:
2. Далее вставляем ключ OpenSSH («Public key for pasting into OpenSSH authorized_keys file:») в файл authorized_keys:
Откроется текстовый редактор Nano и вставляем туда скопированный ключ сочетанием клавиш Ctrl+ПКМ и жмем Paste, или жмем просто ПКМ:
3. Должно получиться как на скриншоте ниже, жмем сочетание клавиш CTRL+X что бы сохранить, далее клавиша Y и Enter:
Проверка:
Готово, дальше переходим в Putty, что бы проверить подключение по ключам и добавляем наш приватный ключ как показано на скриншоте ниже, вводим адрес сервера во вкладке Sessions и пробуем подключиться:
Если все сделано правильно, после ввода нашего логина произойдет подключение по ключам без ввода паролей пользователя (если вы установили на приватный ключ пароль, то на этой стадии потребуется его ввод):
Повышаем безопасность отключением возможности подключения в связке логин+пароль к серверу:
- Открываем редактором файл конфигурации sshd_config от root или sudo:
2. Жмем Ctrl+W для поиска и ПКМ вставляем в поиске PasswordAuthentication и жмем Enter:
3. Раскоментируем строку PasswordAuthentication yes и поставим там значение NO как на скриншоте ниже и сохраняем сочетанием клавиш Ctrl+x, Y, Enter:
4. Далее нам нужно перезагрузить службу SSH командой:
Важно перед этим рекомендую убедиться в том что авторизация по ключам у вас точно работает, в противном случае нас ожидает выстрел в ногу и потеря доступа к серверу)
5. Пробуем подключиться к серверу, при вводе любого логина кроме того к которому привязан ключи мы получим ошибку и не возможность подключения к серверу
Итог:
Готово, в этой заметке мы разобрали как обезопасить свой сервер с помощью SSH ключей с отключением возможности подключиться в связке логин+пароль, данные ключи можно использовать на остальных своих серверах, так же настоятельно рекомендую поставить пароль на приватный ключ и сделать бекап пары ключей, что бы исключить невозможность подключения к серверу при их утере.
Надеюсь у вас это не вызвало какого-то большого труда, что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я выпускаю статьи и заметки, которых на Я.Дзене может и не выйти или посетить мой сайт, спасибо за потраченное время на чтение и доброго времени суток!)
Вы так же можете выразить благодарность автору за статью, покупкой кофе:
Кофейня тут)