# 🔑 SETUP INITIAL — ClĂ©s SSH et configuration ## ⚠ IMPORTANT: ClĂ©s jamais commitĂ©es **Le dossier `keys/` entier est dans `.gitignore`** — Rien ne sera jamais transfĂ©rĂ© vers GitLab. Chaque dĂ©veloppeur gĂ©nĂšre **ses propres clĂ©s localement** avec le script. --- ## ⚠ IMPORTANT: À FAIRE UNE SEULE FOIS ### Étape 1: GĂ©nĂ©rer les clĂ©s SSH ```bash # Lancer le script PowerShell (une seule fois!) .\init-keys.ps1 ``` **Cela va:** 1. ✅ CrĂ©er le rĂ©pertoire `keys/` (s'il n'existe pas) 2. ✅ GĂ©nĂ©rer `lab_rsa` (Windows → Gateway) 3. ✅ GĂ©nĂ©rer `gateway_rsa` (Gateway → Destinations) 4. ✅ Copier `lab_rsa` dans `~/.ssh/` pour convenience **RĂ©sultat (local uniquement, jamais commitĂ©):** ``` keys/ ├── lab_rsa (privĂ©e - LOCAL ONLY) ├── lab_rsa.pub ├── gateway_rsa (privĂ©e - LOCAL ONLY) └── gateway_rsa.pub ``` ### Étape 2: Garder les clĂ©s locales Les clĂ©s restent **uniquement sur votre machine** grĂące Ă  `.gitignore`: ``` keys/ ← Tout le dossier est ignorĂ© ``` **Vous ne verrez jamais:** - ❌ `keys/lab_rsa` dans GitLab - ❌ `keys/lab_rsa.pub` dans GitLab - ❌ `keys/gateway_rsa` dans GitLab - ❌ `keys/gateway_rsa.pub` dans GitLab --- ## 🚀 AprĂšs le premier setup ### DĂ©marrer le lab ```bash docker compose up -d ``` ### Tester ```bash ssh -p 2222 -i keys/lab_rsa testuser@localhost 'hostname' # RĂ©sultat: dest1 ou dest2 ✓ ``` --- ## 🔄 RedĂ©marrer/Reconstruire ### Cas 1: ArrĂȘter et relancer (sans reconstruire) ```bash docker compose down docker compose up -d ``` **⚠ ATTENTION:** Vous allez avoir une erreur de host key! ``` @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ``` **Solution:** Supprimer l'entrĂ©e du host dans `known_hosts` ```bash # Supprimer la ligne pour localhost:2222 ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222" # Puis relancer docker compose up -d ``` ### Cas 2: Reconstruire complĂštement (hard reset) ```bash # ArrĂȘter et supprimer volumes docker compose down -v # Supprimer known_hosts ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222" # Relancer docker compose up -d ``` --- ## 📝 Explication: Pourquoi cette erreur? Chaque fois que vous `docker compose down/up`, les conteneurs sont **recréés avec de NOUVELLES clĂ©s d'hĂŽte** (host keys). ``` Conteneur 1 (down): Host key: ABC123... Conteneur 2 (up): Host key: DEF456... ↑ DiffĂ©rent! SSH refuse! ``` **Solution:** RĂ©initialiser `known_hosts` Ă  chaque fois. --- ## 🔐 SĂ©curitĂ©: ClĂ©s SSH ### lab_rsa (privĂ©e - LOCAL ONLY) - GĂ©nĂ©rĂ©e par `init-keys.ps1` - Vous la gardez dans `~/.ssh/` et `keys/` - **Jamais commitĂ©e** (dans `.gitignore`) ### gateway_rsa (privĂ©e - LOCAL ONLY) - GĂ©nĂ©rĂ©e par `init-keys.ps1` - CompilĂ©e dans l'image Docker gateway au build - **Jamais commitĂ©e** (dans `.gitignore`) ### Les clĂ©s publiques - Aussi ignorĂ©es (sĂ©curitĂ©: aucune exception) - GĂ©nĂ©rĂ©es localement Ă  chaque fois --- ## đŸ‘„ Workflow collaboratif Chaque dĂ©veloppeur gĂ©nĂšre **ses propres clĂ©s isolĂ©es**: ### DĂ©veloppeur A ```bash 1. git clone ... 2. .\init-keys.ps1 ← GĂ©nĂšre ses clĂ©s A_lab_rsa, A_gateway_rsa 3. docker compose up -d 4. Tests avec ses clĂ©s A ``` ### DĂ©veloppeur B (mĂȘme repo, mĂȘme moment) ```bash 1. git clone ... 2. .\init-keys.ps1 ← GĂ©nĂšre ses clĂ©s B_lab_rsa, B_gateway_rsa 3. docker compose up -d 4. Tests avec ses clĂ©s B ``` **Les clĂ©s d'A et B ne se mĂ©langent jamais** — Chacun a les siennes localement. --- ## ✅ Checklist setup initial ``` ☐ ExĂ©cuter: .\init-keys.ps1 ☐ VĂ©rifier: keys/ existe maintenant ☐ VĂ©rifier: keys/lab_rsa existe ☐ VĂ©rifier: keys/gateway_rsa existe ☐ VĂ©rifier: .gitignore protĂšge keys/ ☐ docker compose up -d ☐ Tester: ssh -p 2222 testuser@localhost 'hostname' ☐ RĂ©sultat: dest1 ou dest2 ✓ ``` --- ## 🐛 Troubleshooting clĂ©s ### Erreur: "keys/lab_rsa: No such file or directory" ``` Cause: init-keys.ps1 pas exĂ©cutĂ© Fix: .\init-keys.ps1 ``` ### Erreur: "Permission denied (publickey)" ``` Cause: ClĂ©s gĂ©nĂ©rĂ©es mais Dockerfile pas mis Ă  jour Fix: RĂ©gĂ©nĂ©rer les clĂ©s + docker compose build --no-cache ``` ### Erreur: "Load key: Permission denied" ``` Cause: gateway_rsa permissions incorrectes dans image Fix: VĂ©rifier gateway/Dockerfile: RUN chmod 600 /etc/sshproxy/gateway_rsa RUN chown testuser:testuser /etc/sshproxy/gateway_rsa Puis: docker compose build --no-cache ``` ### Erreur: "ECDSA key fingerprint... Are you sure?" ``` Cause: Container recréé, nouvelle host key Fix: ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222" ssh -p 2222 testuser@localhost ``` ### Keys/ supprimĂ© accidentellement? ``` Aucun souci! Juste rĂ©gĂ©nĂ©rer: .\init-keys.ps1 Les nouvelles clĂ©s seront utilisĂ©es automatiquement. ``` --- ## 📚 Voir aussi - [../README.md](../README.md) — Concept global - [../doc/REDEMARRAGE_QUICK_REFERENCE.md](../doc/REDEMARRAGE_QUICK_REFERENCE.md) — Down/up guide - [../keys/README.md](../keys/README.md) — Explication du workflow des clĂ©s --- ## 🎯 RĂ©sumĂ© en 1 ligne **Une seule fois:** `.\init-keys.ps1` | **À chaque down/up:** `ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222"`