Автентифікація за допомогою SSH-ключів у PuTTY

Автентифікація за допомогою SSH-ключів у PuTTY

Вступ

У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію на основі ключів SSH за допомогою PuTTY, популярного SSH-клієнта для Windows. Використання автентифікації на основі ключів замість автентифікації за паролем дозволяє підвищити безпеку вашого SSH-з’єднання. Автентифікація на основі ключів гарантує, що лише ті, хто має відповідний приватний ключ, можуть увійти в систему, забезпечуючи більш безпечний і надійний метод автентифікації.

Цей посібник описує процес налаштування автентифікації за ключами SSH за допомогою PuTTY та клієнтської програми.

Важливе застереження щодо безпеки: Приватний ключ має бути суворо конфіденційним. Ніколи не передавайте його третім особам, не зберігайте на незахищених пристроях і використовуйте пароль для додаткового захисту ключа. Якщо ключ скомпрометовано, негайно створіть нову пару ключів і оновіть файл authorized_keys на сервері.

1) Генерація ключів

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

PuTTYgen генерує пари ключів, що складаються з публічного ключа, який можна поширювати, і приватного ключа, який має залишатися конфіденційним. Публічний ключ використовується для автентифікації під час підключення до віддалених серверів.

Формат .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 — приватний ключ.
  • id_rsa.pub — публічний ключ.

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

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 — на локальний шлях.)

Застереження: Ніколи не передавайте ключ через незахищені канали (наприклад, електронну пошту). Використовуйте шифровані методи.

Конвертація у формат .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 і вкажіть ім’я користувача (наприклад, root або вашого користувача) у полі Auto-login username.

Збережіть сесію для зручності та підключіться.

Під час підключення, якщо ключ захищений паролем, PuTTY попросить його ввести. Якщо все налаштовано правильно, ви увійдете без запиту пароля сервера.

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

Висновок

Налаштувавши автентифікацію за ключами SSH за допомогою PuTTY і сервера Linux, ви встановите більш безпечне та надійне з’єднання. Використання ключів SSH усуває потребу вводити паролі, знижуючи ризик атак грубої сили та перехоплення. Дотримуйтесь кроків, описаних у цьому посібнику, щоб налаштувати автентифікацію за ключами SSH у PuTTY та насолоджуйтесь перевагами.

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