3.3 KiB
🚀 Гайд по созданию SSH-ключей и конфигов для DeepSpeed
Этот гайд помогает настроить SSH между двумя узлами для запуска DeepSpeed в Docker-контейнерах. Все шаги повторяются на обеих машинах (mlnode1
и mlnode2
).
1️⃣ Создаем папки для SSH
Перейдите в директорию вашего проекта (например, deepspeed
) и создайте структуру для хранения ключей и конфигов:
cd /media/Data1/common/docker/deepspeed
mkdir -p ssh_docker/keys
2️⃣ Генерируем SSH-ключи
Создаем ключ по алгоритму ed25519
с названием deepspeed
и сохраняем его в ssh_docker/keys
.
ssh-keygen -t ed25519 -f ssh_docker/keys/deepspeed -N ""
3️⃣ Создаем SSH config
Создаем файл ssh_docker/config
и записываем туда конфигурацию для ваших узлов.
Пример:
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-адрес интерфейса, по которому будет идти соединение. Узнать его можно через:
ip a
Port
— порт, который вы указывали вDockerfile
для SSH (например2229
).
4️⃣ Аналогично на второй машине
Повторите шаги 1-3 на второй машине.
Убедитесь, что IP-адреса в HostName
соответствуют интерфейсам для связи между нодами.
5️⃣ Обмениваемся публичными ключами
Создайте на обеих машинах файл ssh_docker/authorized_keys
и добавьте туда публичный ключ второй машины.
-
На
mlnode1
добавьте публичный ключmlnode2
: -
На
mlnode2
добавьте публичный ключmlnode1
:
cat ssh_docker/keys/deepspeed.pub
Для обмена можно использовать scp
или просто скопировать содержимое deepspeed.pub
вручную.
6️⃣ Выставляем права и владельца
Чтобы SSH корректно работал, выставим права на папку и файлы:
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. Например:
volumes:
- /media/Data1/common/docker/deepspeed/ssh_docker:/root/.ssh