Аутентификация с помощью ключа SSH в PuTTY

Введение

В этом руководстве вы узнаете, как настроить аутентификацию по ключам SSH с помощью PuTTY (популярного SSH-клиента для Windows) Используя аутентификацию на основе ключей вместо аутентификации на основе паролей, вы можете повысить безопасность вашего SSH-соединения. При аутентификации на основе ключей войти в систему могут только те, кто обладает соответствующим закрытым ключом, что обеспечивает более безопасный и надежный метод аутентификации.

В этом руководстве мы рассмотрим процесс настройки аутентификации с помощью SSH-ключей с помощью PuTTY и клиентского приложения.

Важное предупреждение по безопасности: Закрытый ключ (private key) должен храниться в строгой секретности. Никогда не передавайте его третьим лицам, не храните на незащищенных устройствах и используйте пароль для ключа для дополнительной защиты. Если ключ скомпрометирован, немедленно сгенерируйте новый и обновите authorized_keys на сервере.

1) Генерация ключей

PuTTYgen — это инструмент из пакета PuTTY, предназначенный в основном для Windows, для генерации пар SSH-ключей и конвертации их форматов. Его основная функция — создание пар открытых и закрытых ключей, которые могут храниться в файлах .ppk (специфический формат PuTTY). Кроме того, PuTTYgen может конвертировать ключи между форматами, обеспечивая совместимость с различными SSH-клиентами и серверами, такими как OpenSSH.

PuTTYgen позволяет генерировать пары ключей, состоящие из открытого ключа (public key), которым можно делиться, и закрытого ключа (private key), который должен оставаться конфиденциальным. Открытый ключ используется для аутентификации при подключении к удаленным серверам.

Формат .ppk специфичен для PuTTY, но PuTTYgen может конвертировать ключи в другие форматы, такие как OpenSSH.

Альтернатива: Генерация ключей в PuTTYgen

Вы можете генерировать ключи прямо в PuTTYgen на Windows-машине, без использования Linux-сервера. Для этого:

  1. Откройте PuTTYgen.

  2. Выберите тип ключа (например, RSA или EdDSA) и размер (рекомендуется 2048 бит или больше).

    Аутентификация с помощью ключа SSH в PuTTY
  3. Нажмите "Generate" и двигайте мышкой для генерации энтропии.

    Аутентификация с помощью ключа SSH в PuTTY
  4. Сохраните публичный ключ (скопируйте текст из поля "Public key for pasting into OpenSSH authorized_keys file") и приватный ключ как .ppk.

    Аутентификация с помощью ключа SSH в PuTTY
  5. Добавьте публичный ключ в файл ~/.ssh/authorized_keys на сервере (см. ниже).

Однако в этом руководстве мы рассмотрим генерацию ключей на Linux-сервере с помощью ssh-keygen, а затем конвертацию для PuTTY.

Предварительные условия

Прежде чем начать, убедитесь, что у вас есть следующие компоненты:

  1. PuTTY и PuTTYgen — скачайте с официального сайта. PuTTYgen входит в пакет PuTTY.

  2. Сервер Linux с установленным OpenSSH (обычно предустановлен в большинстве дистрибутивов).

  3. Доступ к серверу по SSH с паролем (для начальной настройки ключей).

  4. Опционально: Пароль для защиты ключей (рекомендуется для повышения безопасности).

Проверка конфигурации сервера

Перед генерацией ключей убедитесь, что на сервере включена аутентификация по ключам. Откройте файл /etc/ssh/sshd_config (с правами root):

sudo nano /etc/ssh/sshd_config

Убедитесь, что строка PubkeyAuthentication yes присутствует и не закомментирована. Если изменения внесены, сохраните файл и перезапустите службу SSH:

sudo systemctl restart sshd

(В некоторых дистрибутивах: sudo service ssh restart).

Пошаговое руководство по генерации ключей в Linux

Подключитесь к серверу по SSH с паролем (используя PuTTY или другой клиент) и выполните следующие шаги от имени пользователя, под которым вы хотите авторизоваться (рекомендуется не root для безопасности; используйте sudo при необходимости).

Запустите утилиту ssh-keygen. Она спросит, где сохранить ключи (по умолчанию ~/.ssh/id_rsa), и попросит задать пароль (рекомендуется задать для дополнительной защиты; можно пропустить, нажав Enter).

ssh-keygen -t rsa -b 2048

(Опционально: используйте -t ed25519 для более современного алгоритма).

Теперь у вас есть два файла в каталоге ~/.ssh:


  • id_rsa — закрытый ключ (private key).
  • id_rsa.pub — открытый ключ (public key).

Просмотрите ключи (опционально, для проверки):

cat ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub

Перейдите в папку ~/.ssh (если ещё не там):

cd ~/.ssh

Добавьте открытый ключ в файл authorized_keys (используйте >>, чтобы не перезаписывать существующий файл):

cat id_rsa.pub >> authorized_keys

Установите правильные права доступа (это критично для работы SSH):

chmod 700 ~/.ssh
chmod 600 id_rsa
chmod 600 authorized_keys

После этих шагов сервер готов принимать подключения по ключу. Перезапустите SSH, если меняли конфигурацию:

sudo systemctl restart sshd


2) Конвертация ключа и авторизация с помощью PuTTY

Теперь передайте закрытый ключ (id_rsa) с сервера на вашу локальную Windows-машину и конвертируйте его в формат .ppk для PuTTY.

Передача ключа на локальную машину

Используйте scp (из PuTTY пакета — pscp.exe) или другой безопасный метод. Пример с pscp (запустите в командной строке Windows):

pscp user@server_ip:~/.ssh/id_rsa C:\path\to\local\id_rsa

(Замените user@server_ip на ваши данные, C:\path\to\local — на локальный путь).

Предупреждение: Никогда не передавайте ключ по незащищенным каналам (например, email). Используйте шифрованные методы.

Конвертация в формат .ppk с помощью PuTTYgen


Откройте PuTTYgen на Windows.

Аутентификация с помощью ключа SSH в PuTTY

Нажмите "Load" и выберите файл id_rsa (PuTTYgen поддерживает формат OpenSSH).


Аутентификация с помощью ключа SSH в PuTTY


Если ключ защищен паролем, введите его.

Аутентификация с помощью ключа SSH в PuTTY

После загрузки нажмите "Save private key" и сохраните файл как .ppk (например, mykey.ppk). Согласитесь на сохранение без пароля, если не хотите дополнительный (но рекомендуется использовать пароль).

Настройка PuTTY для использования ключа

Откройте PuTTY.

В главном окне укажите IP-адрес сервера, порт (обычно 22) и тип соединения SSH.

Перейдите в раздел "Connection → SSH → Auth →Credentials".

В поле "Private key file for authentication" укажите путь к файлу .ppk.


Аутентификация с помощью ключа SSH в PuTTY



Опционально: Для автологина перейдите в "Connection → Data" и в поле "Auto-login username" укажите имя пользователя (например, root или ваш пользователь).

Сохраните сессию для удобства и подключитесь.

При подключении, если ключ защищен паролем, PuTTY попросит его ввести. Если всё настроено правильно, вы войдете без запроса пароля сервера.

Совет: Для управления несколькими ключами используйте PuTTY Pageant (агент ключей из пакета PuTTY). Загрузите .ppk в Pageant, и PuTTY будет использовать его автоматически.

Заключение

Настроив аутентификацию по SSH-ключам с помощью PuTTY и Linux-сервера, вы установите более безопасное и надежное соединение. Использование SSH-ключей избавляет от необходимости вводить пароли, снижая риск brute-force атак и перехвата. Следуйте шагам, описанным в этом руководстве, чтобы настроить аутентификацию с помощью SSH-ключей в PuTTY и наслаждайтесь преимуществами.

Дополнительно: Регулярно обновляйте ключи, мониторьте логи сервера (/var/log/auth.log) и отключите парольную аутентификацию в sshd_config (PasswordAuthentication no), если ключи — единственный метод входа. Если возникнут проблемы, проверьте права файлов и конфигурацию сервера.