Objectifs
- Comprendre le rôle de SSH pour l’administration de serveurs à distance.
- Générer une paire de clés SSH (publique et privée) pour une authentification sécurisée.
- Se connecter à un serveur sans mot de passe en utilisant votre clé SSH.
- Connaître les bonnes pratiques de base pour sécuriser une connexion SSH.
Qu’est-ce que SSH ?
SSH (Secure SHell) est un protocole réseau qui permet de se connecter et d’exécuter des commandes sur une machine distante de manière sécurisée. Toute la communication entre votre machine et le serveur est chiffrée, ce qui empêche quiconque d’intercepter les informations (comme les mots de passe). C’est l’outil indispensable de tout administrateur système ou ingénieur DevOps.
La commande de base est simple :
ssh utilisateur@adresse_du_serveur
Authentification par clé : La méthode à privilégier
Se connecter avec un mot de passe est possible, mais ce n’est ni pratique pour l’automatisation, ni très sûr. La méthode standard et recommandée est l’authentification par clé.
Le principe
- Vous générez sur votre machine une paire de clés :
- Une clé privée (ex:
id_ed25519) : Elle reste sur votre machine, secrète. C’est la preuve de votre identité. - Une clé publique (ex:
id_ed25519.pub) : Vous la copiez sur les serveurs auxquels vous voulez accéder. C’est comme un “cadenas” que seul vous pouvez ouvrir.
- Une clé privée (ex:
- Quand vous vous connectez, le serveur utilise la clé publique pour envoyer un défi à votre machine. Votre machine utilise sa clé privée pour prouver qu’elle est bien qui elle prétend être, sans jamais envoyer la clé privée sur le réseau.
Générer et utiliser ses clés
Étape 1 : Générer une paire de clés
Si vous n’en avez pas déjà une, générez une nouvelle clé. L’algorithme ed25519 est moderne, rapide et sûr.
# -t : type de clé, -C : commentaire (souvent votre email)
ssh-keygen -t ed25519 -C "votre_email@exemple.com"
# La commande vous posera quelques questions :
# - Emplacement du fichier : appuyez sur Entrée pour accepter la valeur par défaut (~/.ssh/id_ed25519).
# - Passphrase : C'est un mot de passe pour protéger votre clé privée. Fortement recommandé !
Étape 2 : Copier la clé publique sur le serveur
La commande ssh-copy-id est l’outil parfait pour cela. Elle copie votre clé publique dans le bon fichier (~/.ssh/authorized_keys) sur le serveur distant et s’assure que les permissions sont correctes.
# Remplacez 'user' et 'serveur.exemple.com' par vos informations
ssh-copy-id user@serveur.exemple.com
Étape 3 : Se connecter
Maintenant, la connexion se fera sans mot de passe (ou en vous demandant la passphrase de votre clé si vous en avez mis une).
ssh user@serveur.exemple.com
Bonnes pratiques de sécurité
- Toujours utiliser une passphrase pour votre clé privée. Cela ajoute une couche de sécurité cruciale si votre ordinateur portable est volé.
- Ne jamais partager votre clé privée. Jamais.
- Sur les serveurs que vous gérez, désactivez l’authentification par mot de passe. Dans le fichier
/etc/ssh/sshd_configdu serveur, mettez l’optionPasswordAuthentication noet redémarrez le service SSH. - Interdire la connexion directe de l’utilisateur
root(PermitRootLogin no). Connectez-vous avec un utilisateur standard, puis utilisezsudo.
Pièges courants
- Mauvaises permissions sur le dossier
.ssh: Le serveur SSH est très strict. Si votre dossier~/.sshou votre fichierauthorized_keysont des permissions trop ouvertes (modifiables par d’autres utilisateurs), le serveur refusera la connexion par clé par mesure de sécurité.ssh-copy-idgère cela pour vous. - Copier sa clé privée au lieu de la publique. La clé privée ne doit jamais quitter votre machine.
Exercices
Pour ces exercices, vous pouvez utiliser une machine virtuelle locale ou un serveur distant si vous en avez un.
-
Générez votre propre clé :
- Si vous n’en avez pas, exécutez
ssh-keygen -t ed25519. Choisissez une passphrase. - Observez les deux fichiers créés (
id_ed25519etid_ed25519.pub) dans votre dossier~/.ssh.
- Si vous n’en avez pas, exécutez
-
Autorisez votre clé :
- Utilisez
cat ~/.ssh/id_ed25519.pubpour afficher votre clé publique. - (Scénario simplifié) Copiez cette clé publique et ajoutez-la manuellement à la fin du fichier
~/.ssh/authorized_keyssur la même machine.
- Utilisez
-
Testez la connexion :
- Essayez de vous connecter à votre propre machine avec SSH :
ssh votre_user@localhost. - La connexion devrait s’établir en vous demandant la passphrase de votre clé, mais pas le mot de passe de votre session.
- Essayez de vous connecter à votre propre machine avec SSH :