# 🚀 Гайд по созданию SSH-ключей и конфигов для DeepSpeed Этот гайд помогает настроить SSH между двумя узлами для запуска DeepSpeed в Docker-контейнерах. Все шаги повторяются на обеих машинах (`mlnode1` и `mlnode2`). --- ## 1️⃣ Создаем папки для SSH Перейдите в директорию вашего проекта (например, `deepspeed`) и создайте структуру для хранения ключей и конфигов: ```bash cd /media/Data1/common/docker/deepspeed mkdir -p ssh_docker/keys ``` --- ## 2️⃣ Генерируем SSH-ключи Создаем ключ по алгоритму `ed25519` с названием `deepspeed` и сохраняем его в `ssh_docker/keys`. ```bash ssh-keygen -t ed25519 -f ssh_docker/keys/deepspeed -N "" ``` --- ## 3️⃣ Создаем SSH config Создаем файл `ssh_docker/config` и записываем туда конфигурацию для ваших узлов. **Пример:** ```bash cat > ssh_docker/config << EOF Host mlnode1_ds HostName 172.16.45.5 User root Port 2229 IdentityFile ~/.ssh/keys/deepspeed StrictHostKeyChecking no Host mlnode2_ds HostName 172.16.45.3 User root Port 2229 IdentityFile ~/.ssh/keys/deepspeed StrictHostKeyChecking no EOF ``` * `HostName` — IP-адрес интерфейса, по которому будет идти соединение. Узнать его можно через: ```bash ip a ``` * `Port` — порт, который вы указывали в `Dockerfile` для SSH (например `2229`). --- ## 4️⃣ Аналогично на второй машине Повторите шаги **1-3** на второй машине. Убедитесь, что IP-адреса в `HostName` соответствуют интерфейсам для связи между нодами. --- ## 5️⃣ Обмениваемся публичными ключами Создайте на обеих машинах файл `ssh_docker/authorized_keys` и добавьте туда публичный ключ второй машины. * На `mlnode1` добавьте публичный ключ `mlnode2`: * На `mlnode2` добавьте публичный ключ `mlnode1`: ```bash cat ssh_docker/keys/deepspeed.pub ``` Для обмена можно использовать `scp` или просто скопировать содержимое `deepspeed.pub` вручную. --- ## 6️⃣ Выставляем права и владельца Чтобы SSH корректно работал, выставим права на папку и файлы: ```bash sudo chmod 700 ssh_docker sudo chmod 700 ssh_docker/keys sudo chmod 600 ssh_docker/keys/deepspeed sudo chmod 644 ssh_docker/keys/deepspeed.pub sudo chmod 644 ssh_docker/config sudo chmod 600 ssh_docker/authorized_keys sudo chown -R root:root ssh_docker ``` --- ## 7️⃣ Использование в Docker Эту папку можно монтировать в контейнер как volume для использования SSH. Например: ```yaml volumes: - /media/Data1/common/docker/deepspeed/ssh_docker:/root/.ssh ``` ---