В материале про безопасность серверов хостинга я упоминал авторизацию на сервере по ключам и сегодня хочу остановиться на этом подробнее.
Для начала кратко о преимуществах:
Во-первых, на своём домашнем компьютере мы избавляемся от пароля как такового. Теперь нам не нужно помнить несвязный набор из пары десятков цифр-букв-символов и вводить его при каждой авторизации на сервере. По опыту пароли для серверов не запоминают, а хранят в обычном текстовом файле в открытом виде — что сводит на нет все прочие меры безопасности.
Во-вторых, авторизируясь по ключу мы можем отключить на сервере авторизацию по паролю, а значит все попытки подбора пароля на сервере обречены на провал с самого начала.
Перейдём непосредственно к настройке. Весь процесс состоит из трёх этапов — генерация пары ключей, настройка авторизации на клиенте и сервере, отключение на сервере авторизации по паролю.
Генерация ключей
Для генерации пароля на компьютере я использую PuTTYgen от разработчика PuTTY. Скачать PuTTYgen можно на официальной страничке, там же можно скачать PuTTY, если её у вас ещё нет.
При запуске puttygen.exe
нам показывается следующее окно, где для генерации пары ключей необходимо только нажать кнопку Generate.
Для генерации ключа нас просят перемещать мышку в случайном порядке на пустой области — так и сделаем.
После генерации ключа открывается диалог сохранения. В верхнем окне располагается публичный ключ (который нам будет нужно скопировать на сервер) и предлагается задать комментарий (Key comment) и пароль (Key passphrase) для приватного ключа (он будет храниться на вашем компьютере). В качестве комментария ключа на своих серверах я использую имя сервера, на клиентских — ник клиента.
Ставить пароль на ключи или не ставить — дело каждого, я ставлю небольшой пароль удобный для запоминания и ввода. Можно так же ставить серьёзные, сложные пароли и использовать Pageant, чтобы не вводить их при каждой авторизации. Можно вообще не указывать пароль.
После указания комментария и пароля нажимаем Save private key и сохраняем приватный ключ с удобным именем в любую папку.
Настройка авторизации на клиенте и сервере
После того как ключи сгенерированы и сохранены — нужно настроить ssh-клиент и сервер для их использования. Начнём с сервера т.к. это немного сложнее.
Заходим в домашнюю директорию root пользователя через WinSCP (он же у нас настроен?) и создаём в ней папку .ssh
с правами 700 (просмотр и создание файлов только владельцем).
Для этого в нужной папке нажимаем F7 и заполняем диалоговое окно, как показано на скриншоте ниже
Далее нам нужно зайти в созданную папку и создать в ней файл с публичным ключём.
Для этого нажимаем Shift + F4, вводим authorized_keys (без расширения!) в качестве имени файла, нажимаем OK.
В открывшийся блокнот копируем содержимое окна «Public key for pasting ..» из PuTTYgen (без изменений!). Сохраняем данный файл и задаём ему права права — 600 (только чтение).
На этом настройка использования ключей со стороны сервера закончена, переходим к настройке клиента.
В моём случае это PuTTY, но аналогично настраивается в WinSCP и других клиентах для работы по ssh-протоколу.
Для использования ключа нам необходимо изменить всего одну настройку, а именно указать путь до файла с приватным ключом
Указываем путь до своего приватного ключа, сохраняем профиль и пробуем авторизироваться на сервере
Как видите авторизация идёт по ключу и нас просят указать пароль для ключа (не путать с паролем для root пользователя на сервере).
Отключение авторизации по паролю на сервере
Мы успешно авторизировались на сервере по ключу и теперь самое время отключить авторизацию по паролю.
Для этого открываем файл /etc/ssh/sshd_config
и изменяем в нём опцию PasswordAuthentication
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Спасибо за статью! Два раза уже пригодилась.