You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.3 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 🚀 Гайд по созданию 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
```
---