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.
# Lancer le script PowerShell (une seule fois!)
.\init-keys.ps1
Cela va:
keys/ (s'il n'existe pas)lab_rsa (Windows → Gateway)gateway_rsa (Gateway → Destinations)lab_rsa dans ~/.ssh/ pour convenienceRésultat (local uniquement, jamais commité):
keys/
├── lab_rsa (privée - LOCAL ONLY)
├── lab_rsa.pub
├── gateway_rsa (privée - LOCAL ONLY)
└── gateway_rsa.pub
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 GitLabkeys/lab_rsa.pub dans GitLabkeys/gateway_rsa dans GitLabkeys/gateway_rsa.pub dans GitLabdocker compose up -d
ssh -p 2222 -i keys/lab_rsa testuser@localhost 'hostname'
# Résultat: dest1 ou dest2 ✓
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
# Supprimer la ligne pour localhost:2222
ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222"
# Puis relancer
docker compose up -d
# 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
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.
init-keys.ps1~/.ssh/ et keys/.gitignore)init-keys.ps1.gitignore)Chaque développeur génère ses propres clés isolées:
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
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.
☐ 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 ✓
Cause: init-keys.ps1 pas exécuté
Fix: .\init-keys.ps1
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
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
Cause: Container recréé, nouvelle host key
Fix: ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222"
ssh -p 2222 testuser@localhost
Aucun souci! Juste régénérer:
.\init-keys.ps1
Les nouvelles clés seront utilisées automatiquement.
Une seule fois: .\init-keys.ps1 | À chaque down/up: ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222"