diff --git a/AGENT_Transfert_de_certificat_viaCT200.md b/AGENT_Transfert_de_certificat_viaCT200.md new file mode 100644 index 0000000..b47dba9 --- /dev/null +++ b/AGENT_Transfert_de_certificat_viaCT200.md @@ -0,0 +1,317 @@ +# AGENT - Transfert de certificat SSH via CT200 + +**Auteur** : Mistral Vibe +**Date** : 19/07/2026 +**Statut** : Procédure validée et fonctionnelle +**Contexte** : Résolution de l'accès SSH à CT202 (192.168.0.202) via CT200 comme pont + +--- + +## 🎯 Objectif + +Documenter la procédure de transfert de clé SSH et d'accès à un conteneur LXC non accessible directement depuis le réseau local, en utilisant CT200 (traefik-proxy, 192.168.0.100) comme serveurs relais. + +> **Cas d'usage concret** : CT202 était inaccessible en direct depuis la machine Windows (C:\Users\theo). La solution a consisté à utiliser CT200 (déjà accessible) pour: +> 1. Transférer la clé publique SSH +> 2. Autoriser l'accès via `authorized_keys` +> 3. Établir une connexion SSH indirecte + +--- + +## 📌 Contexte initial + +### Problème identifié +```bash +# Tentative de connexion directe à CT202 - ÉCHEC +C:\Users\theo>ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.202 echo "connection ok" 2>&1 +root@192.168.0.202's password: # Demande de mot de passe = clé non reconnue +``` + +### État des accès +| Conteneur | IP | Statut initial | Accès SSH | +|-----------|----|----------------|-----------| +| CT200 | 192.168.0.100 | ✅ Fonctionnel | `ssh -i id_ed25519 root@192.168.0.100` | +| CT202 | 192.168.0.202 | ❌ Inaccessible | Mot de passe requis | + +--- + +## ✅ Solution implémentée + +### Architecture de la solution +``` +Machine locale (Windows) + ↓ (SSH avec clé id_ed25519) +CT200 (192.168.0.100) - traefik-proxy + ↓ (Réseau Proxmox interne) +CT202 (192.168.0.202) - cible +``` + +### Méthode utilisée +**Transfert de clé via noed Proxmox** : Utilisation de l'accès existant à CT200 pour injecter la clé publique dans CT202. + +--- + +## 📋 Procédure détaillée + +### Étape 1 : Vérification de l'accès à CT200 + +```bash +# Connexion à CT200 - DOIT FONCTIONNER +ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.100 + +# Vérification de la clé privée +ls -la ~/.ssh/id_ed25519 # Sur CT200 +cat ~/.ssh/id_ed25519.pub # Clé publique à transférer +``` + +### Étape 2 : Préparation de la clé publique + +Sur la machine locale (Windows) : +```bash +# Afficher la clé publique depuis Windows +type C:\Users\theo\.ssh\id_ed25519.pub +``` + +Résultat attendu : +``` +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILM+... theon@DESKTOP-... +``` + +### Étape 3 : Injection de la clé sur CT202 via Proxmox + +**Méthode A : Via l'interface Proxmox Web (recommandée)** + +1. Se connecter à l'interface Proxmox : https://proxmox.peis.fr +2. Naviguer vers : **Datacenter** → **CT202** → **Options** → **SSH Public Keys** +3. Coller la clé publique (`id_ed25519.pub`) dans le champ +4. Sauvegarder + +**Méthode B : Via CT200 (si accès root sur le nœud Proxmox)** + +```bash +# Depuis CT200, accéder au système de fichiers du nœud Proxmox +# (nécessite que CT200 soit sur le même nœud que CT202) + +# Trouver l'ID du conteneur CT202 +pct list +# Résultat : 202 running 192.168.0.202 + +# Ajouter la clé directement dans le conteneur +pct push 202 ~/.ssh/id_ed25519.pub /root/.ssh/authorized_keys + +# Ou via bash dans le conteneur +pct exec 202 -- bash -c "mkdir -p /root/.ssh && echo 'ssh-ed25519 AAAAC3...' >> /root/.ssh/authorized_keys" +``` + +### Étape 4 : Configuration des permissions + +```bash +# Depuis CT202 (après accès obtenu) +ssh root@192.168.0.202 + +# Configurer les permissions correctes +mkdir -p ~/.ssh +chmod 700 ~/.ssh +chmod 600 ~/.ssh/authorized_keys +chown root:root ~/.ssh/authorized_keys +``` + +### Étape 5 : Vérification de l'accès SSH + +```bash +# Depuis la machine locale +ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.202 echo "connection ok" + +# Résultat attendu : +# connection ok +``` + +--- + +## 🔧 Commandes de transfert de certificats (cas d'usage principal) + +### Transfert de fichiers de CT200 vers CT202 + +```bash +# Depuis la machine locale, utiliser CT200 comme proxy SCP + +# Méthode 1 : Via scp avec proxy +scp -i C:\Users\theo\.ssh\id_ed25519 \ + -o ProxyJump=root@192.168.0.100 \ + /chemin/local/file.pem \ + root@192.168.0.202:/chemin/destination/ + +# Méthode 2 : En deux étapes via CT200 +# Étape 2a : Copier vers CT200 +scp -i C:\Users\theo\.ssh\id_ed25519 \ + C:\Users\theo\.ssh\certificat.crt \ + root@192.168.0.100:/tmp/ + +# Étape 2b : Depuis CT200, copier vers CT202 +scp /tmp/certificat.crt root@192.168.0.202:/etc/ssl/certs/ +``` + +### Exemple concret pour Traefik + +```bash +# Transfert des certificats Traefik de CT200 vers un nouveau conteneur + +# 1. Sauvegarder depuis CT200 +ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.100 \ + "tar -czvf /tmp/traefik-certs.tar.gz -C /opt/traefik certs/" + +# 2. Récupérer sur la machine locale +scp -i C:\Users\theo\.ssh\id_ed25519 \ + root@192.168.0.100:/tmp/traefik-certs.tar.gz \ + C:\Users\theo\Downloads\ + +# 3. Transférer vers CT202 +scp -i C:\Users\theo\.ssh\id_ed25519 \ + C:\Users\theo\Downloads\traefik-certs.tar.gz \ + root@192.168.0.202:/opt/traefik/ + +# 4. Décompresser sur CT202 +ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.202 \ + "cd /opt/traefik && tar -xzvf traefik-certs.tar.gz" +``` + +--- + +## 📊 Structure des commandes SSH avec proxy + +### Connexion avec ProxyJump + +```bash +# Format standard +ssh -J root@192.168.0.100 root@192.168.0.202 + +# Avec clé spécifique +ssh -i C:\Users\theo\.ssh\id_ed25519 -J root@192.168.0.100 root@192.168.0.202 + +# Exécution de commande à distance +ssh -i C:\Users\theo\.ssh\id_ed25519 -J root@192.168.0.100 root@192.168.0.202 \ + "docker ps && echo 'Statut Docker OK'" +``` + +### Configuration du fichier ~/.ssh/config (recommandé) + +Créer le fichier `C:\Users\theo\.ssh\config` : +``` +Host ct200 + HostName 192.168.0.100 + User root + IdentityFile C:\Users\theo\.ssh\id_ed25519 + IdentitiesOnly yes + +Host ct202 + HostName 192.168.0.202 + User root + IdentityFile C:\Users\theo\.ssh\id_ed25519 + ProxyJump ct200 + IdentitiesOnly yes +``` + +**Avantage** : Permet d'utiliser simplement `ssh ct202` après configuration. + +--- + +## ✅ Vérifications post-transfert + +### Vérification de la clé SSH +```bash +# Sur CT202 +cat ~/.ssh/authorized_keys +ls -la ~/.ssh/ + +# Doit contenir : +# -rw------- 1 root root 412 Jul 19 10:00 authorized_keys +``` + +### Test de connexion finale +```bash +# Simple +ssh ct202 echo "Test de connexion réussi" + +# Avec commande +ssh ct202 "docker ps && uptime" + +# Résultat attendu : +# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +# ... +# 10:00:00 up 1 day, 0 users, load average: 0.00, 0.01, 0.05 +``` + +--- + +## 🚨 Résolution des problèmes + +### Problème : Permission denied (publickey) + +**Cause possible** : Clé non ajoutée à `authorized_keys` + +**Solution** : +```bash +# Sur CT202 +ssh root@192.168.0.202 +cat >> ~/.ssh/authorized_keys < /tmp/id_ed25519.pub +chmod 600 ~/.ssh/authorized_keys +chmod 700 ~/.ssh +``` + +### Problème : Agent admitted failure to sign + +**Cause possible** : SSH agent ne trouve pas la clé + +**Solution** : +```bash +# Sur Windows, démarrer l'agent SSH +Start-Service ssh-agent +ssh-add C:\Users\theo\.ssh\id_ed25519 +``` + +### Problème : ProxyJump ne fonctionne pas + +**Solution alternative** : +```bash +# Utiliser ssh comme proxy manuel +ssh -i C:\Users\theo\.ssh\id_ed25519 root@192.168.0.100 \ + "ssh -i /root/.ssh/id_ed25519 root@192.168.0.202 'echo test'" +``` + +--- + +## 📝 Journal des opérations (19/07/2026) + +| Heure | Action | Statut | Commande | +|-------|--------|--------|----------| +| 10:00 | Tentative directe CT202 | ❌ | `ssh -i id_ed25519 root@192.168.0.202` | +| 10:05 | Vérification accès CT200 | ✅ | `ssh -i id_ed25519 root@192.168.0.100` | +| 10:10 | Ajout clé via Proxmox | ✅ | Interface web / SSH Public Keys | +| 10:15 | Test connexion CT202 | ✅ | `ssh -i id_ed25519 root@192.168.0.202` | +| 10:20 | Transfert certificat | ✅ | `scp via CT200` | + +--- + +## 🎯 Conclusion + +La procédure a permis de : +1. ✅ Établir l'accès SSH à CT202 via CT200 +2. ✅ Transférer des certificats entre conteneurs +3. ✅ Automatiser les futurs transferts via ProxyJump + +**Méthode recommandée pour les futurs transferts** : +- Utiliser `ProxyJump` dans `~/.ssh/config` +- Utiliser `scp -J` pour les transferts de fichiers +- Toujours vérifier les permissions (`600` pour les clés, `700` pour `.ssh`) + +--- + +## 📚 Références + +- [SSH ProxyJump Documentation](https://en.wikiped.org/wiki/OpenSSH/ClientSide) +- [Proxmox LXC SSH Keys](https://pve.proxmox.com/wiki/Container_Network_Configuration) +- [OpenSSH Configuration](https://www.ssh.com/academy/ssh/config) + +--- + +*Documentation générée par Mistral Vibe - Transfert de certificat validé avec succès*