1. Pourquoi passer aux clés SSH ?
L'authentification par mot de passe a deux problèmes majeurs : les mots de passe peuvent être devinés par brute-force, et vous devez le retaper à chaque connexion. Les clés SSH règlent les deux problèmes à la fois.
Le principe : vous générez une paire de clés mathématiquement liées.
- La clé privée reste sur votre ordinateur, ne se partage jamais
- La clé publique est copiée sur les serveurs auxquels vous voulez accéder
Quand vous vous connectez, le serveur vérifie que votre clé privée correspond à la clé publique enregistrée - sans que le mot de passe ne transite sur le réseau. Même si quelqu'un intercepte la connexion, il ne peut rien faire sans votre clé privée.
2. Générer une paire de clés
L'algorithme ED25519 est le choix recommandé en 2025 - il est plus court, plus rapide et plus sûr que le vieux RSA 2048.
Sur votre ordinateur (pas sur le VPS) :
ssh-keygen -t ed25519 -C "votre@email.com" -f ~/.ssh/croustycloud_ed25519Détail des options :
-t ed25519: algorithme de chiffrement-C "votre@email.com": commentaire pour identifier la clé (utile quand vous en avez plusieurs)-f ~/.ssh/croustycloud_ed25519: nom du fichier (sans suffixe = clé privée, avec.pub= clé publique)
Le programme vous demande une passphrase - c'est le mot de passe qui protège votre clé privée. Choisissez-en un solide.
Deux fichiers sont créés :
~/.ssh/croustycloud_ed25519 # Clé privée - NE JAMAIS PARTAGER
~/.ssh/croustycloud_ed25519.pub # Clé publique - à copier sur les serveursLa clé privée ne quitte jamais votre machine. Si quelqu'un obtient votre clé privée sans passphrase, il accède à tous vos serveurs instantanément. Faites-en une sauvegarde dans un endroit sécurisé (gestionnaire de mots de passe, support chiffré).
3. Déployer la clé sur votre VPS
ssh-copy-id copie automatiquement votre clé publique dans le bon fichier sur le serveur :
ssh-copy-id -i ~/.ssh/croustycloud_ed25519.pub -p 2222 votre-user@VOTRE-IP-VPSEn coulisses, cette commande ajoute votre clé dans ~/.ssh/authorized_keys sur le serveur. À partir de maintenant, SSH utilise votre clé pour s'authentifier.
Si vous êtes sous Windows et que ssh-copy-id n'est pas disponible, faites-le manuellement :
# Affichez le contenu de votre clé publique
cat ~/.ssh/croustycloud_ed25519.pub
# Copiez le résultat, puis connectez-vous au serveur et collez-le :
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "VOTRE_CLE_PUBLIQUE_COLLÉE_ICI" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysTestez la connexion par clé dans un nouveau terminal avant de désactiver l'authentification par mot de passe. Si quelque chose ne va pas, vous pouvez encore corriger le problème.
Une fois la connexion par clé validée, désactivez les mots de passe dans /etc/ssh/sshd_config :
PasswordAuthentication no4. Le fichier de config SSH client
Plutôt que de taper ssh -p 2222 -i ~/.ssh/croustycloud_ed25519 mon-user@92.168.1.45 à chaque fois, le fichier ~/.ssh/config vous permet de créer des alias.
Créez ou éditez ce fichier sur votre ordinateur :
nano ~/.ssh/configHost monvps
HostName VOTRE-IP-VPS
User votre-user
Port 2222
IdentityFile ~/.ssh/croustycloud_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3Signification des options :
Host monvps: l'alias que vous utilisez pour vous connecterHostName: l'IP ou le domaine réel du serveurUser: votre nom d'utilisateur sur le serveurPort: le port SSH (si différent de 22)IdentityFile: quelle clé privée utiliserServerAliveInterval 60: envoie un ping toutes les 60 secondes pour garder la connexion active
Maintenant, connectez-vous simplement avec :
ssh monvpsVous pouvez ajouter autant d'hôtes que vous voulez dans ce fichier.
5. L'agent SSH : ne taper la passphrase qu'une seule fois
L'agent SSH mémorise votre clé déchiffrée en mémoire RAM pour la durée de votre session. Vous entrez la passphrase une seule fois au démarrage, et toutes vos connexions SSH suivantes l'utilisent automatiquement.
# Démarrer l'agent (si pas déjà actif)
eval $(ssh-agent -s)
# Charger votre clé (vous entrez la passphrase ici)
ssh-add ~/.ssh/croustycloud_ed25519
# Vérifier les clés chargées
ssh-add -lSur macOS, ajoutez ces lignes dans ~/.ssh/config pour que le Keychain macOS retienne automatiquement votre passphrase entre les redémarrages :
Host *
AddKeysToAgent yes
UseKeychain yes6. Les tunnels SSH (port forwarding)
Les tunnels SSH permettent de faire passer du trafic d'un port local à un port distant via la connexion SSH. Utile pour accéder à des services qui ne sont pas exposés sur internet (base de données, panel d'administration...).
Tunnel local (le plus courant)
Scénario : votre base de données MySQL tourne sur le VPS sur le port 3306, mais elle n'est pas accessible depuis l'extérieur (c'est une bonne pratique). Vous voulez vous y connecter depuis votre ordinateur.
ssh -L 3307:localhost:3306 monvps -NTraduction : "redirige mon port local 3307 vers le port 3306 du VPS, via SSH".
Ouvrez ensuite votre client MySQL en vous connectant à localhost:3307 - il arrivera en réalité sur votre base de données distante.
-L 3307:localhost:3306: port local → destination depuis le serveur-N: ouvre le tunnel sans démarrer un shell (laisse le terminal occupé - Ctrl+C pour fermer)
Tunnel dynamique (proxy SOCKS)
Crée un proxy qui fait passer tout votre trafic navigateur par le VPS :
ssh -D 1080 monvps -NConfigurez ensuite Firefox ou Chrome avec un proxy SOCKS5 sur 127.0.0.1:1080. Votre trafic sortira de l'IP du VPS.
7. Bonnes pratiques à retenir
- Toujours utiliser des clés plutôt que des mots de passe
- Changer le port SSH par défaut (22 → autre)
- Désactiver la connexion root directe
- Protéger la clé privée avec une passphrase forte
- Ne jamais partager ou copier sa clé privée
- Faire une rotation des clés tous les ans
Vous maîtrisez maintenant SSH. La prochaine étape logique : installer Fail2Ban pour bloquer automatiquement les tentatives d'intrusion, et configurer Nginx comme reverse proxy pour exposer vos applications en HTTPS.