Documentation basée sur les man pages de ssh-keygen, ssh-copy-id et sshd_config.
ssh-keygen -t ed25519 -C "utilisateur@exemple.com"Vous serez invité à :
- Spécifier le chemin du fichier (défaut :
~/.ssh/id_ed25519) - Saisir une passphrase pour chiffrer la clé privée
Passphrase : Une chaîne de caractères (peut être vide) qui chiffre la clé privée avec AES 128-bit. Selon le man : « une bonne passphrase fait 10-30 caractères, n'est pas une phrase simple facilement devinable, et contient un mélange de majuscules, minuscules, chiffres et caractères non alphanumériques ».
ssh-keygen -t ed25519 -C "utilisateur@exemple.com" -N ""L'option -N "" spécifie une passphrase vide (pas d'invite interactive).
# RSA (4096 bits pour plus de sécurité)
ssh-keygen -t rsa -b 4096 -C "utilisateur@exemple.com"
# ECDSA
ssh-keygen -t ecdsa -C "utilisateur@exemple.com"Note : Ed25519 est recommandé pour les nouvelles clés (meilleure sécurité, plus court).
| Option | Description |
|---|---|
-t type |
Type de clé : rsa, dsa, ecdsa, ed25519 |
-b bits |
Nombre de bits (RSA min 2048, défaut 3072) |
-f fichier |
Chemin du fichier de clé |
-C commentaire |
Commentaire pour identifier la clé |
-N passphrase |
Passphrase (pas d'invite) |
-q |
Mode silencieux |
~/.ssh/id_ed25519: Clé privée (à garder secrète)~/.ssh/id_ed25519.pub: Clé publique (à installer sur les serveurs)
ssh-copy-id automatise l'installation de votre clé publique sur un serveur distant. Selon le man, c'est un script qui utilise SSH pour se connecter à une machine distante et ajoute votre clé à ~/.ssh/authorized_keys en gérant les permissions correctement.
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur.comou plus simplement (détecte automatiquement la clé publique) :
ssh-copy-id utilisateur@serveur.comssh-copy-id -p 2222 utilisateur@serveur.com| Option | Description |
|---|---|
-i fichier |
Chemin explicite de la clé publique |
-p port |
Port SSH (défaut 22) |
-f |
Mode forcé (pas de vérification) |
-n |
Simulation (dry-run) |
-s |
Mode SFTP (si commandes limitées sur serveur) |
- Se connecte au serveur distant (vous demande le mot de passe)
- Crée
~/.sshs'il n'existe pas - Ajoute votre clé publique à
~/.ssh/authorized_keys - Fixe les permissions :
~/.ssh= 700,authorized_keys= 600 - Supprime les droits de groupe/autres pour éviter les erreurs StrictModes
Important : Nécessite que l'authentification par mot de passe soit activée sur le serveur (au moins temporairement).
Éditer /etc/ssh/sshd_config sur le serveur :
sudo nano /etc/ssh/sshd_config# Activer l'authentification par clé publique (déjà par défaut)
PubkeyAuthentication yes
# Désactiver l'authentification par mot de passe
PasswordAuthentication no# Authentification
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
# Fichier des clés autorisées
AuthorizedKeysFile .ssh/authorized_keys
# Sécurité
Protocol 2
PermitRootLogin no
MaxAuthTries 3
# Autres options recommandées
ClientAliveInterval 300
ClientAliveCountMax 2# Vérifier la syntaxe (important!)
sudo sshd -t
# Redémarrer SSH
sudo systemctl restart ssh
# ou sur certains systèmes
sudo systemctl restart sshd# Afficher les paramètres actifs
sudo sshd -T | grep -i auth
# Ou consulter directement
sudo grep -E "^(Pubkey|Password)Authentication" /etc/ssh/sshd_configLe man sshd_config stipule que StrictModes vérifie les permissions. Si elles sont incorrectes, la connexion échoue.
# Sur le client
ls -la ~/.ssh/
# Doit montrer : drwx------ (700) pour ~/.ssh
# Sur le serveur
ls -la ~/.ssh/authorized_keys
# Doit montrer : -rw------- (600) pour authorized_keysCorriger si nécessaire :
# Sur le serveur
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys# 1. Créer la clé
ssh-keygen -t ed25519 -C "mon.utilisateur@exemple.com"
# 2. Uploader la clé
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur.example.com
# 3. Tester la connexion
ssh utilisateur@serveur.example.com# 1. Éditer la configuration
sudo nano /etc/ssh/sshd_config
# 2. Mettre à jour comme indiqué plus haut
# PubkeyAuthentication yes
# PasswordAuthentication no
# 3. Valider la syntaxe
sudo sshd -t
# 4. Redémarrer
sudo systemctl restart ssh
# 5. Vérifier les permissions (ssh-copy-id s'en charge normalement)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys# Vérifier les permissions
ls -la ~/.ssh/authorized_keys
# Doit être 600 (ou -rw-------)
# Vérifier la clé publique
cat ~/.ssh/authorized_keys
# Doit commencer par ssh-ed25519 ou ssh-rsa# Vérifier que le mot de passe fonctionne
ssh utilisateur@serveur.com
# Essayer avec explicite
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 utilisateur@serveur.com# Activer le mode verbose
ssh -vv utilisateur@serveur.com
# Chercher les lignes "Trying private key:" et "Authentications that can continue"ssh-keygen -p -f ~/.ssh/id_ed25519Le man indique : « change la passphrase d'un fichier de clé privée existante au lieu de créer une nouvelle clé ».
Références : man ssh-keygen, man ssh-copy-id, man sshd_config