SSH-ключі для хмарних серверів ⋆ ALexHost SRL

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills
13.12.2024

SSH-ключі для хмарних серверів

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

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

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

  • Приватний ключ: Він надійно зберігається на вашому локальному комп’ютері і ніколи не повинен бути доступним стороннім особам.
  • Відкритий ключ: Розміщується на віддаленому сервері. Сервер використовує відкритий ключ для автентифікації користувачів на основі їхніх приватних ключів.

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

2. Навіщо використовувати SSH-ключі для хмарних серверів?

SSH-ключі мають кілька переваг над традиційною автентифікацією на основі пароля:

  • Підвищена безпека: SSH-ключі набагато складніше зламати, ніж паролі, оскільки вони використовують криптографічні алгоритми для автентифікації. Крім того, SSH-ключі не вразливі до атак грубої сили або фішингових атак, як паролі.
  • Зручність: Після налаштування SSH-ключі дозволяють здійснювати автентифікацію без пароля, що полегшує вхід без необхідності щоразу вводити облікові дані.
  • Автоматизація: Багато автоматизованих процесів і сценаріїв покладаються на автентифікацію на основі ключів SSH, що робить керування хмарними серверами і розгортаннями більш ефективним.
  • Контроль доступу: SSH-ключі можна роздавати лише авторизованим користувачам, що дозволяє контролювати доступ до ваших хмарних серверів.

3. Як працює аутентифікація за допомогою SSH-ключів

Ось спрощена версія того, як працює автентифікація за допомогою ключа SSH:

  1. Клієнт (ваш локальний комп’ютер) надсилає запит на підключення до сервера.
  2. Сервер перевіряє, чи збігається відкритий ключ клієнта з ключами, що зберігаються у файлі ~/.ssh/authorized_keys.
  3. Якщо збіг знайдено, сервер надсилає клієнту виклик (зазвичай зашифровані дані).
  4. Клієнт використовує свій приватний ключ, щоб розшифрувати виклик і відправити відповідь назад на сервер.
  5. Сервер перевіряє відповідь, і якщо вона правильна, то дозволяє доступ до клієнта без пароля.

4. Як згенерувати SSH-ключі

Щоб використовувати SSH-аутентифікацію за допомогою ключів, спочатку потрібно згенерувати пару ключів. Ось як це зробити:

У Linux або macOS:

  1. Відкрийте ваш термінал.
  2. Запустіть наступну команду, щоб згенерувати нову пару ключів SSH:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Ось що означає кожна опція:

  • -t rsa: Вказує алгоритм RSA.
  • -b 4096: Генерує 4096-бітний ключ для додаткової безпеки.
  • -C “your_email@example.com”: Додає коментар, щоб допомогти ідентифікувати ключ.
  1. Вам буде запропоновано вибрати місце для збереження ключа. За замовчуванням його буде збережено у каталозі ~/.ssh/. Натисніть Enter, щоб прийняти розташування за замовчуванням.
  2. Ви також можете встановити парольну фразу для додаткової безпеки, хоча це необов’язково. Якщо ви не хочете використовувати парольну фразу, натисніть Enter, щоб залишити її порожньою.

У Windows:

Якщо ви використовуєте Windows, ви можете скористатися SSH-клієнтом, наприклад PuTTYgen, або вбудованою функцією OpenSSH у Windows 10 і новіших версіях:

  1. Відкрийте PowerShell або Командний рядок.
  2. Запустіть ту саму команду, що й вище, щоб згенерувати пару ключів:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Після запуску команди процес буде таким же, як і в Linux або macOS.

5. Додавання вашого SSH-ключа до хмарного сервера

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

Спосіб 1: Використання ssh-copy-id

У Linux або macOS ви можете використовувати команду ssh-copy-id для перенесення відкритого ключа на ваш сервер:

ssh-copy-id user@your-server-ip

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

Спосіб 2: Вручну

Якщо ви використовуєте Windows або віддаєте перевагу ручним діям, ви можете скопіювати відкритий ключ вручну:

  1. Відкрийте файл відкритого ключа за допомогою текстового редактора:
cat ~/.ssh/id_rsa.pub
  1. Скопіюйте весь вміст файлу.
  2. Підключіться до сервера за допомогою парольного SSH-сеансу:
ssh користувач@ваш-сервер-ip
  1. Створіть на сервері каталог ~/.ssh, якщо його не існує:
mkdir -p ~/.ssh
  1. Відкрийте файл authorized_keys:
nano ~/.ssh/authorized_keys
  1. Вставте скопійований відкритий ключ у файл і збережіть його.
  2. Встановіть правильні дозволи:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh

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

6. Вимкнення автентифікації за допомогою пароля (необов’язково, але рекомендується)

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

  1. Відкрийте файл конфігурації SSH на вашому хмарному сервері:
sudo nano /etc/ssh/sshd_config
  1. Знайдіть наступний рядок і змініть його на no:
PasswordAuthentication no
  1. Збережіть файл і перезапустіть службу SSH:
sudo systemctl restart sshd

Тепер тільки користувачі з дійсним SSH-ключем зможуть увійти в систему.

7. Керування ключами SSH

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

8. Висновок

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

Налаштування SSH-ключів може вимагати трохи більше зусиль на початковому етапі, але довгострокова безпека і зручність, які вони забезпечують, роблять це вартим зусиль.

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills