Aller au contenu principal

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é​

ConceptDescription
Clé PrivéeFichier .pem à garder secret
Clé PubliqueInstallée sur l'instance
SSHProtocole de connexion Linux (port 22)
RDPProtocole de connexion Windows (port 3389)
chmod 400Permissions correctes pour clé privée
Instance ConnectAlternative sans gestion de clés

Quiz de Validation​

  1. Quelle est la différence entre clé publique et clé privée ?
  2. Quel utilisateur utiliser pour SSH sur Amazon Linux ?
  3. Quelle commande définit les bonnes permissions sur un fichier .pem ?
  4. Pourquoi SSH refuse une clé avec permissions "too open" ?
  5. Comment récupérer le mot de passe d'une instance Windows ?
  6. Quelle alternative permet de se connecter sans gérer de clés ?

Prochaine section : Security Groups