SSH (Secure Shell) — это протокол для безопасного удаленного доступа к системам. В контексте Attack-Defense CTF он используется для подключения к удаленным серверам или виртуальным машинам для выполнения команд или управления контейнерами и сервисами.
SSH-ключ — это пара криптографических ключей, используемых для аутентификации при подключении к удаленному серверу. Используется заместо пароля.
Чем ключ лучше пароля:
- Безопасность: пароль можно угадать или подобрать с помощью перебора, а ключи предоставляют высокий уровень безопасности благодаря использованию асимметричной криптографии, основанной на математических алгоритмах.
- Удобство: ключи позволяют подключаться без необходимости вводить пароль каждый раз.
Генерация SSH-ключа
Для генерации пары SSH-ключей (публичный и приватный) с использованием алгоритма ED25519 используйте команду:
Параметры:
-t ed25519
— указывает тип ключа (ED25519, более безопасный и быстрый алгоритм).
-f ~/.ssh/id_ed25519
— указывает путь к файлу, в котором будет сохранен приватный ключ. Название файла абсолютно не имеет значения. По количеству ключей тоже можно генерировать сколько угодно.
После выполнения команды будут созданы два файла:
- ~/.ssh/id_ed25519 — приватный ключ (его нужно хранить в секрете!).
- ~/.ssh/id_ed25519.pub — публичный ключ (его можно передавать на серверы для аутентификации).
Ключи обычно хранятся в каталоге ~/.ssh
(~ это домашний каталог текущего пользователя в директории /home)
Подключение к серверу с помощью пароля
ssh <username>@<hostname_or_ip>
Пример:
Добавление ssh ключа на сервер
После исполнения этой команды потребуется ввести пароль от сервера. Ключ добавится на сервер и зайти можно будет в последствии по нему.
Подключение с серверу с помощью ключа
Параметр i
указывать не обязательно, т.к. ssh обычно сам знает, где он находится.
ssh -i <path_to_private_key> <username>@<hostname_or_ip_address>
Пример:
ssh -i ~/.ssh/id_ed25519 root@119.52.211.83