Як використовувати ключі SSH замість паролів?

Використання ключів SSH замість паролів значно підвищує безпеку доступу до серверів. Ось докладний посібник, як це зробити:

1. Що таке ключі SSH?

Ключі SSH — це пара криптографічних ключів (приватний і публічний), які використовуються для аутентифікації під час з’єднання через протокол SSH.

  • Приватний ключ зберігається у вас і ніколи не передається.
  • Публічний ключ передається серверу і використовується для перевірки.

2. Створення пари ключів SSH

  1. Відкрийте термінал на вашому комп’ютері.

  2. Виконайте команду для створення ключів:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • -t rsa — тип ключа (RSA).
    • -b 4096 — довжина ключа в бітах (чим більше, тим безпечніше).
    • -C "your_email@example.com" — коментар, зазвичай ваша електронна пошта.
  3. Система запропонує вказати шлях для збереження ключа:

    Enter file in which to save the key (/home/your_user/.ssh/id_rsa):
    
    • Натисніть Enter, щоб зберегти в стандартному місці (~/.ssh/id_rsa).
  4. Система запитає парольну фразу (passphrase):

    Enter passphrase (empty for no passphrase):
    
    • Ви можете залишити її порожньою, але це не рекомендується. Парольна фраза додає додатковий рівень захисту.

Після цього буде створено два файли:

  • Приватний ключ: ~/.ssh/id_rsa
  • Публічний ключ: ~/.ssh/id_rsa.pub

3. Завантаження публічного ключа на сервер

  1. Автоматично через команду:
    Якщо у вас є доступ до сервера за допомогою пароля, скористайтеся командою:

    ssh-copy-id user@server_ip
    
    • user — ім’я користувача на сервері.
    • server_ip — IP-адреса або домен сервера.

    Ця команда автоматично додасть ваш публічний ключ до файлу ~/.ssh/authorized_keys на сервері.

  2. Ручне копіювання:
    Якщо автоматичний метод недоступний:

    • Скопіюйте вміст публічного ключа:
      cat ~/.ssh/id_rsa.pub
      
    • Увійдіть на сервер:
      ssh user@server_ip
      
    • Відкрийте або створіть файл ~/.ssh/authorized_keys:
      nano ~/.ssh/authorized_keys
      
    • Вставте туди ваш публічний ключ.
    • Збережіть зміни і закрийте редактор.

    Переконайтеся, що права доступу до файлу правильні:

    chmod 600 ~/.ssh/authorized_keys
    

4. Налаштування сервера для роботи тільки з ключами

  1. Відредагуйте файл конфігурації SSH:

    sudo nano /etc/ssh/sshd_config
    
  2. Знайдіть і змініть/додайте такі параметри:

    PasswordAuthentication no
    PubkeyAuthentication yes
    

    Це вимикає аутентифікацію за паролем і дозволяє використовувати лише ключі.

  3. Перезапустіть службу SSH:

    sudo systemctl restart ssh
    

5. Перевірка підключення

  1. Виконайте підключення:

    ssh user@server_ip
    

    Якщо все налаштовано правильно, вам не доведеться вводити пароль.

  2. Якщо ви використовували парольну фразу для ключа, система запросить її:

    Enter passphrase for key '~/.ssh/id_rsa':
    

6. Додаткові поради

  • Керування кількома серверами:
    Якщо у вас є кілька серверів, можете використовувати окремі пари ключів для кожного або конфігурувати файл ~/.ssh/config:

    Host server1
        HostName server1.example.com
        User user1
        IdentityFile ~/.ssh/id_rsa_server1
    
    Host server2
        HostName server2.example.com
        User user2
        IdentityFile ~/.ssh/id_rsa_server2
    
  • Зміна порту SSH:
    Змінюючи порт за замовчуванням (22), можна підвищити безпеку. Відредагуйте /etc/ssh/sshd_config і змініть:

    Port 2222
    

Таким чином, заміна паролів на ключі SSH значно підвищує безпеку вашого з’єднання і захищає від багатьох видів атак.