objectif
Créer une clé SSH ed25519 robuste avec passphrase, l’ajouter à l’agent et la déployer proprement sur un serveur.
code minimal
# génère une clé ed25519 protégée (KDF renforcé)
ssh-keygen -t ed25519 -a 100 -C "vous@data.pm" -f ~/.ssh/id_ed25519
utilisation
# démarrer l'agent et charger la clé (session courante)
eval "$(ssh-agent -s)"
ssh-add -t 8h ~/.ssh/id_ed25519
# copier la clé publique sur le serveur (méthode simple)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@serveur.data.pm
# tester la connexion
ssh user@serveur.data.pm
variante(s) utile(s)
# config SSH par hôte pour simplifier les commandes
cat >> ~/.ssh/config <<'EOF'
Host prod
HostName serveur.data.pm
User user
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ServerAliveInterval 60
ServerAliveCountMax 3
EOF
# puis
ssh prod
# éviter de retaper la passphrase trop souvent (agent 24h)
ssh-add -t 24h ~/.ssh/id_ed25519
# macOS: stocker la passphrase dans le trousseau (selon version d'OpenSSH)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null || ssh-add -K ~/.ssh/id_ed25519
# déployer la clé sans ssh-copy-id (fallback)
cat ~/.ssh/id_ed25519.pub | ssh user@serveur.data.pm 'umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'
notes
- utilisez une passphrase forte;
-a 100renforce la dérivation (bcrypt KDF) sans gêner l’usage quotidien. - ne partagez jamais le fichier privé
~/.ssh/id_ed25519. Seul~/.ssh/id_ed25519.pubest public. ssh-copy-idgère les permissions correctement; si indisponible, la commande fallback ci-dessus le fait aussi.- pour plusieurs clés, précisez
IdentityFiledans~/.ssh/configet activezIdentitiesOnly yespour éviter les négociations lentes.