SETUP_INITIAL.md 5.3 KB

🔑 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

# 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

docker compose up -d

Tester

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)

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

Cas 2: Reconstruire complètement (hard reset)

# 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

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)

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


🎯 Résumé en 1 ligne

Une seule fois: .\init-keys.ps1 | À chaque down/up: ssh-keygen -f ~/.ssh/known_hosts -R "[localhost]:2222"