Ключи 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 или Command Prompt.
  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 user@your-server-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