Retour au cours

introduction à ssh : connexion, clés et sécurité

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

  1. 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.
  2. 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_config du serveur, mettez l’option PasswordAuthentication no et redémarrez le service SSH.
  • Interdire la connexion directe de l’utilisateur root (PermitRootLogin no). Connectez-vous avec un utilisateur standard, puis utilisez sudo.

Pièges courants

  • Mauvaises permissions sur le dossier .ssh : Le serveur SSH est très strict. Si votre dossier ~/.ssh ou votre fichier authorized_keys ont des permissions trop ouvertes (modifiables par d’autres utilisateurs), le serveur refusera la connexion par clé par mesure de sécurité. ssh-copy-id gè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.

  1. 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_ed25519 et id_ed25519.pub) dans votre dossier ~/.ssh.
  2. Autorisez votre clé :

    • Utilisez cat ~/.ssh/id_ed25519.pub pour afficher votre clé publique.
    • (Scénario simplifié) Copiez cette clé publique et ajoutez-la manuellement à la fin du fichier ~/.ssh/authorized_keys sur la même machine.
  3. 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.