Comment générer une clé SSH ed25519

Exécutez ssh-keygen -t ed25519 -C "you@laptop", appuyez sur Entrée pour accepter le fichier par défaut et saisissez une phrase secrète. Vous obtenez une clé privée dans ~/.ssh/id_ed25519 et une clé publique dans ~/.ssh/id_ed25519.pub. Seule la clé publique va sur un serveur : installez-la avec ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server, ou collez-la dans GitHub.

Mis à jour le . Commandes exécutées avec OpenSSH 10.3 sous macOS et OpenSSH 10.0 sous Debian 13, y compris ssh-copy-id, ssh-add et le test de connexion par clé seule.

Générer la clé

Vérifiez d'abord si vous en avez déjà une avec ls ~/.ssh. Si id_ed25519.pub s'y trouve, passez directement à l'installation.

ssh-keygen -t ed25519 -C "you@laptop"

ssh-keygen pose deux questions :

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/you/.ssh/id_ed25519):
Enter passphrase for "/home/you/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:

Appuyez sur Entrée pour accepter le fichier par défaut. Si une clé existe déjà à cet endroit, tapez un autre chemin, comme ~/.ssh/id_ed25519_work, au lieu de l'écraser.

Le texte après -C est un commentaire qui vous aide à reconnaître la clé. Toute personne qui voit la clé publique peut le lire : n'y mettez rien de privé. Depuis OpenSSH 9.5, un simple ssh-keygen crée aussi une clé Ed25519, mais -t ed25519 fonctionne avec toutes les versions.

Choisir une phrase secrète

La phrase secrète chiffre le fichier de la clé privée. Sans elle, quiconque copie le fichier peut l'utiliser. Avec elle, il lui faut aussi la phrase secrète. Vous pouvez l'ajouter ou la changer plus tard sans changer de clé :

ssh-keygen -p -f ~/.ssh/id_ed25519

Pour ne pas la taper à chaque connexion, chargez la clé dans ssh-agent, comme expliqué plus bas.

Installer la clé publique sur un serveur

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

La commande se connecte une fois avec votre mot de passe, ajoute la clé publique à ~/.ssh/authorized_keys sur le serveur et règle les bonnes permissions. Si ssh-copy-id n'est pas disponible, faites la même chose à la main :

cat ~/.ssh/id_ed25519.pub | ssh user@server 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

Sous Windows, PowerShell n'a pas ssh-copy-id, et la clé se trouve dans votre profil utilisateur :

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Plus de détails dans ssh-copy-id sous Windows.

Tester la connexion

Cette commande n'essaie que les clés, elle ne réussit donc que si la clé fonctionne :

ssh -o PreferredAuthentications=publickey user@server

Ne testez pas avec -o PasswordAuthentication=no seul. Si le serveur autorise la connexion keyboard-interactive, il peut quand même vous demander votre mot de passe par ce biais, et vous croiriez que la clé a fonctionné.

En cas d'échec, consultez résoudre Permission denied (publickey).

Copier la clé publique pour GitHub et d'autres services

pbcopy < ~/.ssh/id_ed25519.pub     # macOS
cat ~/.ssh/id_ed25519.pub          # Linux: copy the output

Sous Windows, lancez Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard. La clé publique tient sur une seule ligne qui commence par ssh-ed25519. Si vous voyez -----BEGIN OPENSSH PRIVATE KEY-----, vous avez ouvert la clé privée : ne la collez nulle part.

La suite pour GitHub se trouve dans comment ajouter une clé SSH à GitHub.

Ne plus taper la phrase secrète

ssh-agent garde la clé déverrouillée en mémoire pendant votre session :

ssh-add ~/.ssh/id_ed25519
ssh-add -l

Sur Mac, la phrase secrète peut aussi rester dans le Trousseau après un redémarrage : voir ssh-agent et le Trousseau macOS. Si ssh-add répond Could not open a connection to your authentication agent, aucun agent ne tourne dans ce shell : voir comment résoudre cette erreur.

Utiliser une clé avec un autre nom

ssh essaie tout seul les noms par défaut, comme id_ed25519. Pour une clé enregistrée sous un autre nom, indiquez-la une fois avec -i :

ssh -i ~/.ssh/id_ed25519_work user@server

Ou associez-la à ce serveur dans ~/.ssh/config, pour qu'un simple ssh myserver l'utilise :

Host myserver
    HostName 203.0.113.10
    User user
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

Le reste de ce fichier est expliqué dans le guide du fichier de configuration SSH.

Pourquoi ed25519

Les clés Ed25519 sont courtes, rapides et prises en charge par toutes les versions d'OpenSSH depuis la 6.5, sortie en 2014. N'utilisez RSA que pour joindre un système ou un appareil ancien qui ne connaît pas ed25519, et alors avec au moins 3072 bits :

ssh-keygen -t rsa -b 4096 -C "you@laptop"

Pour une comparaison point par point, voir clés SSH RSA ou ed25519.

Afficher l'empreinte d'une clé

ssh-keygen -lf ~/.ssh/id_ed25519.pub

L'empreinte sert à vérifier que deux copies d'une clé sont identiques, par exemple la clé listée sur GitHub et celle de votre portable.

Questions

Où est stockée ma clé SSH ?

Dans le dossier .ssh de votre répertoire personnel : ~/.ssh sous macOS et Linux, et le dossier .ssh de votre profil utilisateur sous Windows. id_ed25519 est la clé privée et id_ed25519.pub la clé publique.

Ed25519 est-il meilleur que RSA ?

Pour une nouvelle clé, oui. Les clés Ed25519 sont plus courtes et plus rapides, et toutes les versions actuelles d'OpenSSH les prennent en charge. Gardez RSA, avec au moins 3072 bits, pour les vieux systèmes qui ne connaissent pas ed25519.

Faut-il les options -o et -a 100 des anciens tutoriels ?

Non. -o est acceptée mais ne fait plus rien : le format OpenSSH qu'elle demandait est celui par défaut depuis OpenSSH 7.8. -a fixe le nombre de tours qui protègent la phrase secrète, 16 par défaut. Un nombre plus élevé ralentit celui qui tente de la deviner, et rend le déverrouillage un peu plus lent pour vous.

J'ai oublié ma phrase secrète. Puis-je la récupérer ?

Non. Il n'existe aucun moyen de la lire ni de la réinitialiser. Générez une nouvelle clé, installez sa clé publique sur vos serveurs et retirez l'ancienne de leurs fichiers authorized_keys.

Puis-je utiliser la même clé sur plusieurs serveurs ?

Oui. La clé publique peut aller sur autant de serveurs que vous voulez. Utilisez des clés séparées là où vous voulez pouvoir retirer l'accès séparément, par exemple entre serveurs professionnels et personnels.

Sources

Autres guides : Clés et connexion

Tous les guides