Paires de Clés et Authentification
Comment Accéder à une Instance EC2 ?
Pour vous connecter à une instance EC2, vous avez besoin d'un mécanisme d'authentification. AWS utilise les paires de clés SSH pour Linux et les mots de passe pour Windows.
┌─────────────────────────────────────────────────────────────┐
│ AUTHENTIFICATION EC2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ LINUX WINDOWS │
│ ───── ─────── │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Clé SSH │ │ Mot de │ │
│ │ (RSA/ED) │ │ passe │ │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ SSH │ │ RDP │ │
│ │ Port 22 │ │ Port 3389│ │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────────┐ │
│ │ Instance EC2 │ │
│ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Paires de Clés SSH (Linux)
Qu'est-ce qu'une Paire de Clés ?
Une paire de clés est composée de deux parties :
┌─────────────────────────────────────────────────────────────┐
│ PAIRE DE CLÉS SSH │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ CLÉ PRIVÉE │ │
│ │ (ma-cle.pem) │ │
│ │ │ │
│ │ • Fichier que VOUS gardez sur votre ordinateur │ │
│ │ • NE JAMAIS partager ou publier ! │ │
│ │ • Sert à prouver votre identité │ │
│ │ • Si perdue = plus d'accès à l'instance │ │
│ │ │ │
│ │ Format : fichier .pem (Linux/Mac) ou .ppk (PuTTY) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ CLÉ PUBLIQUE │ │
│ │ (installée sur l'instance) │ │
│ │ │ │
│ │ • Automatiquement installée par AWS au lancement │ │
│ │ • Stockée dans ~/.ssh/authorized_keys │ │
│ │ • Peut être partagée sans risque │ │
│ │ • Permet de vérifier la clé privée │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 🔐 Principe : Ce qui est chiffré avec la publique ne │
│ peut être déchiffré qu'avec la privée correspondante │
│ │
└─────────────────────────────────────────────────────────────┘
Analogie : Cadenas et Clé
┌─────────────────────────────────────────────────────────────┐
│ ANALOGIE : CADENAS ET CLÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ CLÉ PUBLIQUE = CADENAS OUVERT │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 🔓 Vous pouvez donner des cadenas ouverts │ │
│ │ à tout le monde. Ils peuvent fermer │ │
│ │ des boîtes avec, mais pas les ouvrir. │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ CLÉ PRIVÉE = CLÉ UNIQUE DU CADENAS │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 🔑 Seul VOUS avez la clé qui ouvre │ │
│ │ ces cadenas. Si vous la perdez, │ │
│ │ personne ne peut ouvrir les boîtes. │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ APPLICATION : │
│ • Instance EC2 = Boîte fermée avec votre cadenas │
│ • Connexion SSH = Utiliser votre clé pour entrer │
│ │
└─────────────────────────────────────────────────────────────┘
Créer une Paire de Clés
Via la Console AWS
1. EC2 → Network & Security → Key Pairs
2. Create key pair
3. Nom : "ma-cle-ec2"
4. Type : RSA (ou ED25519)
5. Format : .pem (Linux/Mac) ou .ppk (PuTTY/Windows)
6. Create key pair
7. ⬇️ Le fichier .pem est automatiquement téléchargé
8. ⚠️ GARDEZ-LE PRÉCIEUSEMENT ! AWS ne le stocke pas !
Via AWS CLI
# Créer une paire de clés
aws ec2 create-key-pair \
--key-name ma-cle-ec2 \
--query 'KeyMaterial' \
--output text > ma-cle-ec2.pem
# Définir les permissions (Linux/Mac)
chmod 400 ma-cle-ec2.pem
Se Connecter en SSH
Linux / macOS
# Syntaxe de base
ssh -i /chemin/vers/cle.pem utilisateur@ip-publique
# Exemple concret
ssh -i ~/Downloads/ma-cle-ec2.pem ec2-user@52.1.2.3
# Utilisateurs par défaut selon l'AMI :
# Amazon Linux, RHEL : ec2-user
# Ubuntu : ubuntu
# Debian : admin ou debian
# CentOS : centos ou ec2-user
# SUSE : ec2-user ou root
Windows avec PuTTY
1. Télécharger PuTTY et PuTTYgen
2. Convertir .pem en .ppk :
• Ouvrir PuTTYgen
• Load → Sélectionner le .pem
• Save private key → ma-cle.ppk
3. Se connecter avec PuTTY :
• Host Name : ec2-user@52.1.2.3
• Connection → SSH → Auth → Browse → ma-cle.ppk
• Open
Windows avec OpenSSH (Windows 10+)
# Windows 10/11 a SSH intégré
ssh -i C:\Users\moi\ma-cle-ec2.pem ec2-user@52.1.2.3
Erreurs Courantes
Erreur : "Permission denied"
┌─────────────────────────────────────────────────────────────┐
│ ERREUR : PERMISSION DENIED │
├─────────────────────────────────────────────────────────────┤
│ │
│ Message : │
│ Permission denied (publickey,gssapi-keyex,gssapi-with-mic)│
│ │
│ Causes possibles : │
│ │
│ 1. Mauvaise clé │
│ → Vérifier que c'est la bonne paire de clés │
│ │
│ 2. Mauvais utilisateur │
│ → ec2-user pour Amazon Linux, ubuntu pour Ubuntu │
│ │
│ 3. Security Group │
│ → Port 22 fermé ou mauvaise IP source │
│ │
│ 4. Instance pas encore prête │
│ → Attendre que status checks passent │
│ │
└─────────────────────────────────────────────────────────────┘
Erreur : "Permissions too open"
┌─────────────────────────────────────────────────────────────┐
│ ERREUR : PERMISSIONS TOO OPEN │
├─────────────────────────────────────────────────────────────┤
│ │
│ Message : │
│ WARNING: UNPROTECTED PRIVATE KEY FILE! │
│ Permissions 0644 for 'ma-cle.pem' are too open. │
│ │
│ Solution (Linux/Mac) : │
│ chmod 400 ma-cle.pem │
│ │
│ Explication : │
│ • 400 = lecture seule pour le propriétaire │
│ • SSH refuse les clés lisibles par d'autres │
│ • Protection contre le vol de clé │
│ │
└─────────────────────────────────────────────────────────────┘
Erreur : "Connection timeout"
┌─────────────────────────────────────────────────────────────┐
│ ERREUR : CONNECTION TIMEOUT │
├─────────────────────────────────────────────────────────────┤
│ │
│ Causes possibles : │
│ │
│ 1. Security Group │
│ → Port 22 non ouvert │
│ → Votre IP n'est pas autorisée │
│ │
│ 2. Pas d'IP publique │
│ → Instance dans subnet privé │
│ → Elastic IP non attachée │
│ │
│ 3. NACL bloquant │
│ → Vérifier les règles réseau du subnet │
│ │
│ 4. Instance non running │
│ → Vérifier l'état de l'instance │
│ │
└─────────────────────────────────────────────────────────────┘
Authentification Windows (RDP)
Récupérer le Mot de Passe
┌─────────────────────────────────────────────────────────────┐
│ CONNEXION WINDOWS - RDP │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Attendre 4+ minutes après le lancement │
│ (Windows doit générer le mot de passe) │
│ │
│ 2. EC2 → Instances → Sélectionner l'instance │
│ │
│ 3. Actions → Security → Get Windows password │
│ │
│ 4. Uploader votre fichier .pem (clé privée) │
│ │
│ 5. Cliquer "Decrypt Password" │
│ │
│ 6. Copier le mot de passe affiché │
│ │
│ 7. Se connecter avec Remote Desktop : │
│ • Adresse : IP publique de l'instance │
│ • Utilisateur : Administrator │
│ • Mot de passe : celui décrypté │
│ │
└─────────────────────────────────────────────────────────────┘
Gestion des Clés
Bonnes Pratiques
┌─────────────────────────────────────────────────────────────┐
│ BONNES PRATIQUES - CLÉS SSH │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ À FAIRE : │
│ │
│ • Utiliser une clé différente par environnement │
│ - cle-dev.pem │
│ - cle-staging.pem │
│ - cle-prod.pem │
│ │
│ • Stocker les clés dans un endroit sécurisé │
│ - Gestionnaire de mots de passe (1Password, etc.) │
│ - Coffre-fort d'entreprise (Vault) │
│ │
│ • Définir les bonnes permissions │
│ - chmod 400 sur les fichiers .pem │
│ │
│ • Utiliser des clés ED25519 (plus sécurisé que RSA) │
│ │
│ ❌ À ÉVITER : │
│ │
│ • Partager les clés par email ou Slack │
│ • Committer les clés dans Git │
│ • Utiliser la même clé pour tout │
│ • Laisser des clés non utilisées │
│ │
└─────────────────────────────────────────────────────────────┘
Alternative : EC2 Instance Connect
AWS offre une alternative aux clés SSH : EC2 Instance Connect
┌─────────────────────────────────────────────────────────────┐
│ EC2 INSTANCE CONNECT │
├─────────────────────────────────────────────────────────────┤
│ │
│ Connexion SSH via la console AWS sans gérer de clés │
│ │
│ Comment l'utiliser : │
│ 1. EC2 → Instances → Sélectionner l'instance │
│ 2. Connect → EC2 Instance Connect │
│ 3. Connect │
│ 4. Un terminal s'ouvre dans le navigateur ! │
│ │
│ Avantages : │
│ • Pas de clé à gérer │
│ • Accès depuis n'importe où │
│ • Traçabilité via CloudTrail │
│ │
│ Inconvénients : │
│ • Nécessite un accès réseau à l'instance │
│ • Pas de transfert de fichiers (scp) │
│ • Pas idéal pour automatisation │
│ │
└─────────────────────────────────────────────────────────────┘
Alternative : AWS Systems Manager Session Manager
┌─────────────────────────────────────────────────────────────┐
│ SESSION MANAGER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Connexion SSH sans port 22 ouvert ! │
│ │
│ Comment ça marche : │
│ • Agent SSM installé sur l'instance │
│ • Connexion via AWS Console ou CLI │
│ • Passe par les API AWS, pas par SSH direct │
│ │
│ Avantages : │
│ • Pas besoin d'ouvrir le port 22 │
│ • Pas de clé SSH à gérer │
│ • Logs de toutes les sessions │
│ • Accès aux instances privées │
│ │
│ aws ssm start-session --target i-0123456789abcdef0 │
│ │
└─────────────────────────────────────────────────────────────┘
Résumé
| Concept | Description |
|---|---|
| Clé Privée | Fichier .pem à garder secret |
| Clé Publique | Installée sur l'instance |
| SSH | Protocole de connexion Linux (port 22) |
| RDP | Protocole de connexion Windows (port 3389) |
| chmod 400 | Permissions correctes pour clé privée |
| Instance Connect | Alternative sans gestion de clés |
Quiz de Validation
- Quelle est la différence entre clé publique et clé privée ?
- Quel utilisateur utiliser pour SSH sur Amazon Linux ?
- Quelle commande définit les bonnes permissions sur un fichier .pem ?
- Pourquoi SSH refuse une clé avec permissions "too open" ?
- Comment récupérer le mot de passe d'une instance Windows ?
- Quelle alternative permet de se connecter sans gérer de clés ?
Prochaine section : Security Groups