← retour aux snippets

ssh-keygen ed25519 sécurisé

Générer une clé SSH moderne (ed25519), la protéger et l'utiliser avec l'agent.

bash sécurité #ssh#sshkeygen#ed25519

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 100 renforce la dérivation (bcrypt KDF) sans gêner l’usage quotidien.
  • ne partagez jamais le fichier privé ~/.ssh/id_ed25519. Seul ~/.ssh/id_ed25519.pub est public.
  • ssh-copy-id gère les permissions correctement; si indisponible, la commande fallback ci-dessus le fait aussi.
  • pour plusieurs clés, précisez IdentityFile dans ~/.ssh/config et activez IdentitiesOnly yes pour éviter les négociations lentes.