SSH (Secure Shell) — это протокол для безопасного удаленного доступа к системам. В контексте Attack-Defense CTF он используется для подключения к удаленным серверам или виртуальным машинам для выполнения команд или управления контейнерами и сервисами.

SSH-ключ — это пара криптографических ключей, используемых для аутентификации при подключении к удаленному серверу. Используется заместо пароля.

Чем ключ лучше пароля:

  1. Безопасность: пароль можно угадать или подобрать с помощью перебора, а ключи предоставляют высокий уровень безопасности благодаря использованию асимметричной криптографии, основанной на математических алгоритмах.
  2. Удобство: ключи позволяют подключаться без необходимости вводить пароль каждый раз.

Генерация SSH-ключа

Для генерации пары SSH-ключей (публичный и приватный) с использованием алгоритма ED25519 используйте команду:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

Параметры: -t ed25519 — указывает тип ключа (ED25519, более безопасный и быстрый алгоритм). -f ~/.ssh/id_ed25519 — указывает путь к файлу, в котором будет сохранен приватный ключ. Название файла абсолютно не имеет значения. По количеству ключей тоже можно генерировать сколько угодно.

После выполнения команды будут созданы два файла:

  1. ~/.ssh/id_ed25519 — приватный ключ (его нужно хранить в секрете!).
  2. ~/.ssh/id_ed25519.pub — публичный ключ (его можно передавать на серверы для аутентификации).

Ключи обычно хранятся в каталоге ~/.ssh (~ это домашний каталог текущего пользователя в директории /home)

Подключение к серверу с помощью пароля

ssh <username>@<hostname_or_ip>

Пример:

ssh root@119.52.211.83

Добавление ssh ключа на сервер

После исполнения этой команды потребуется ввести пароль от сервера. Ключ добавится на сервер и зайти можно будет в последствии по нему.

ssh-copy-id <username>@<hostname_or_ip_address>

Подключение с серверу с помощью ключа

Параметр i указывать не обязательно, т.к. ssh обычно сам знает, где он находится.

ssh -i <path_to_private_key> <username>@<hostname_or_ip_address>

Пример:

ssh -i ~/.ssh/id_ed25519 root@119.52.211.83