SSH-ключі для хмарних серверів
Ключі SSH (Secure Shell) є невід’ємною частиною безпечного керування хмарними серверами. Вони пропонують більш безпечний і зручний спосіб автентифікації користувачів порівняно з традиційними входами на основі пароля. Використовуючи ключі SSH, ви можете встановлювати безпечні, зашифровані з’єднання з хмарними серверами, гарантуючи, що доступ до них отримають лише авторизовані користувачі. У цій статті ми розглянемо, що таке SSH-ключі, як вони працюють і як їх налаштувати на хмарному сервері.
1. Що таке SSH-ключі?
SSH-ключі – це криптографічні ключі, які використовуються для автентифікації клієнтів на SSH-сервері. Замість використання комбінації імені користувача та пароля, яка може бути вразливою до атак грубої сили, SSH-ключі забезпечують більш безпечний і автоматизований спосіб входу на віддалені сервери. Пари ключів SSH складаються з двох частин:
- Приватний ключ: Він надійно зберігається на вашому локальному комп’ютері і ніколи не повинен бути доступним стороннім особам.
- Відкритий ключ: Розміщується на віддаленому сервері. Сервер використовує відкритий ключ для автентифікації користувачів на основі їхніх приватних ключів.
При підключенні до хмарного сервера протокол SSH перевіряє, чи збігається відкритий ключ на сервері з закритим ключем, який зберігається на вашому комп’ютері. Якщо збіг підтверджено, з’єднання встановлюється без необхідності введення пароля.
2. Навіщо використовувати SSH-ключі для хмарних серверів?
SSH-ключі мають кілька переваг над традиційною автентифікацією на основі пароля:
- Підвищена безпека: SSH-ключі набагато складніше зламати, ніж паролі, оскільки вони використовують криптографічні алгоритми для автентифікації. Крім того, SSH-ключі не вразливі до атак грубої сили або фішингових атак, як паролі.
- Зручність: Після налаштування SSH-ключі дозволяють здійснювати автентифікацію без пароля, що полегшує вхід без необхідності щоразу вводити облікові дані.
- Автоматизація: Багато автоматизованих процесів і сценаріїв покладаються на автентифікацію на основі ключів SSH, що робить керування хмарними серверами і розгортаннями більш ефективним.
- Контроль доступу: SSH-ключі можна роздавати лише авторизованим користувачам, що дозволяє контролювати доступ до ваших хмарних серверів.
3. Як працює аутентифікація за допомогою SSH-ключів
Ось спрощена версія того, як працює автентифікація за допомогою ключа SSH:
- Клієнт (ваш локальний комп’ютер) надсилає запит на підключення до сервера.
- Сервер перевіряє, чи збігається відкритий ключ клієнта з ключами, що зберігаються у файлі ~/.ssh/authorized_keys.
- Якщо збіг знайдено, сервер надсилає клієнту виклик (зазвичай зашифровані дані).
- Клієнт використовує свій приватний ключ, щоб розшифрувати виклик і відправити відповідь назад на сервер.
- Сервер перевіряє відповідь, і якщо вона правильна, то дозволяє доступ до клієнта без пароля.
4. Як згенерувати SSH-ключі
Щоб використовувати SSH-аутентифікацію за допомогою ключів, спочатку потрібно згенерувати пару ключів. Ось як це зробити:
У Linux або macOS:
- Відкрийте ваш термінал.
- Запустіть наступну команду, щоб згенерувати нову пару ключів SSH:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Ось що означає кожна опція:
- -t rsa: Вказує алгоритм RSA.
- -b 4096: Генерує 4096-бітний ключ для додаткової безпеки.
- -C “your_email@example.com”: Додає коментар, щоб допомогти ідентифікувати ключ.
- Вам буде запропоновано вибрати місце для збереження ключа. За замовчуванням його буде збережено у каталозі ~/.ssh/. Натисніть Enter, щоб прийняти розташування за замовчуванням.
- Ви також можете встановити парольну фразу для додаткової безпеки, хоча це необов’язково. Якщо ви не хочете використовувати парольну фразу, натисніть Enter, щоб залишити її порожньою.
У Windows:
Якщо ви використовуєте Windows, ви можете скористатися SSH-клієнтом, наприклад PuTTYgen, або вбудованою функцією OpenSSH у Windows 10 і новіших версіях:
- Відкрийте PowerShell або Командний рядок.
- Запустіть ту саму команду, що й вище, щоб згенерувати пару ключів:
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 або віддаєте перевагу ручним діям, ви можете скопіювати відкритий ключ вручну:
- Відкрийте файл відкритого ключа за допомогою текстового редактора:
cat ~/.ssh/id_rsa.pub
- Скопіюйте весь вміст файлу.
- Підключіться до сервера за допомогою парольного SSH-сеансу:
ssh користувач@ваш-сервер-ip
- Створіть на сервері каталог ~/.ssh, якщо його не існує:
mkdir -p ~/.ssh
- Відкрийте файл authorized_keys:
nano ~/.ssh/authorized_keys
- Вставте скопійований відкритий ключ у файл і збережіть його.
- Встановіть правильні дозволи:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Це гарантує, що лише користувач матиме доступ на читання і запис до ключа і каталогу.
6. Вимкнення автентифікації за допомогою пароля (необов’язково, але рекомендується)
Після того, як SSH-ключі налаштовані і працюють, настійно рекомендується вимкнути парольну автентифікацію на сервері, щоб запобігти несанкціонованому доступу. Ось як це зробити:
- Відкрийте файл конфігурації SSH на вашому хмарному сервері:
sudo nano /etc/ssh/sshd_config
- Знайдіть наступний рядок і змініть його на no:
PasswordAuthentication no
- Збережіть файл і перезапустіть службу SSH:
sudo systemctl restart sshd
Тепер тільки користувачі з дійсним SSH-ключем зможуть увійти в систему.
7. Керування ключами SSH
- Додавання декількох ключів: Якщо доступ до сервера потрібен кільком користувачам, ви можете додати їхні відкриті ключі до файлу authorized_keys.
- Видалення ключів: Якщо ви хочете відкликати доступ для певного користувача, просто видаліть його відкритий ключ з файлу authorized_keys.
8. Висновок
Використання SSH-ключів для доступу до хмарного сервера – це один з найкращих способів захистити ваш сервер і уникнути вразливостей, пов’язаних з автентифікацією на основі пароля. Виконуючи кроки, описані в цій статті, ви зможете згенерувати SSH-ключі, додати їх на свій хмарний сервер і навіть вимкнути вхід за паролем для підвищення безпеки.
Налаштування SSH-ключів може вимагати трохи більше зусиль на початковому етапі, але довгострокова безпека і зручність, які вони забезпечують, роблять це вартим зусиль.