feigned

Se connecter en SSH par échange de clés SSH

Avatar de Le Crabe Le Crabe
  • Le
  • Mis à jour le
  • 57.8K vues
  • 6 commentaires

Publicité

SSH (Secure Shell) est un protocole de communication sécurisé qui permet de se connecter à un ordinateur distant de façon sécurisée.

Publicité

Par défaut, la connexion SSH s’effectue avec un mot de passe. Cette méthode d’authentification n’est pas la plus sûre car votre mot de passe peut être dérobé ou deviné par des pirates qui pourraient dès lors accéder à votre serveur et voler vos données personnelles.

Pour plus de sécurité, il est conseillé de se connecter à un ordinateur distant en utilisant l’authentification par échange de clés SSH.

Dans cet article, nous allons voir comment générer une paire de clés SSH sur Windows ou Linux et comment configurer l’authentification par clés SSH afin de vous connecter sans mot de passe à un serveur via SSH.

Publicité

Préambule : les clés SSH

L’authentification par échange de clés SSH fonctionne en plaçant une clé publique sur l’ordinateur distant et en utilisant une clé privée depuis son ordinateur.

Ces deux clés (publique et privée) sont liées l’une à l’autre. C’est seulement en présentant la clé privée à la clé publique qu’il est possible se connecter.

Chaque clé se présente sous la forme d’une longue chaine de caractères enregistrée dans un fichier.

Pour plus de sécurité, vous pouvez également protéger la clé privée avec une phrase secrète. Autrement dit, pour pouvoir utiliser la clé privée, il faudra saisir un mot de passe, ce qui renforce encore davantage la sécurité.

Les clés SSH peuvent être créées avec différents algorithmes de chiffrement :

  • DSA : dangereux, il n’est plus pris en charge depuis OpenSSH 7.0. À éviter.
  • RSA : acceptable si la longueur de la clé est de 3072 ou 4096 bits. Une longueur de 1024 bits est considérée comme non sûre.
  • Ed25519 : le plus sûr, c’est l’algorithme à privilégier aujourd’hui.

Pour vous aider à y voir plus clair, voici les différents fichiers qui interviennent pour établir une connexion SSH en utilisant une authentification par échange de clés :

  • Sur votre ordinateur :
    • ~/.ssh/id_xxx : votre clé privée
    • ~/.ssh/id_xxx.pub : votre clé publique
  • Sur le serveur :
    • ~/.ssh/authorized_keys : liste des clés publiques autorisées pour se connecter à  l’utilisateur (c’est ici que vous devez placer votre clé publique)

Publicité

Se connecter en SSH par échange de clés SSH

Étape 1 : générer des clés SSH

Pour commencer, nous devons générer une paire de clés SSH :

  • Selon votre système d’exploitation :
    • Windows 10 :
      • Vérifiez que Client OpenSSH est bien installé dans les Paramètres > Applications et fonctionnalités > Fonctionnalités facultatives.
      • Ouvrez PowerShell.
    • Windows 8 ou 7 :
    • Linux :
      • Ouvrez le Terminal.
  • Générez une paire de clés SSH avec la commande ssh-keygen en spécifiant l’algorithme de chiffrement désiré. Par exemple, avec Ed25519 :
    ssh-keygen -t ed25519

    avec RSA 4096 :

    ssh-keygen -t rsa -b 4096
  • Laissez l’emplacement par défaut en appuyant sur Entrée.
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (C:\Users\Pierre\.ssh\id_ed25519):
  • Entrez une phrase secrète pour protéger votre clé privée :
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
  • Voilà, votre paire de clés SSH a bien été générée !
    Your identification has been saved in C:\Users\Pierre\.ssh\id_ed25519.
    Your public key has been saved in C:\Users\Pierre\.ssh\id_ed25519.pub.
    The key fingerprint is:
    SHA256:4Yjb63lZzyRw+ADKaZ6nwZDA7jBrtorVR4mkgXRGWN0 pierre@DESKTOP-VJATO16
    The key's randomart image is:
    +--[ED25519 256]--+
    |..+=. .          |
    |o+o  ..E         |
    |o..o.o ...       |
    |o.o+=o ++..      |
    |oo.=o.+ S=       |
    |.+ .=+.   + .    |
    |o o o+o  o =     |
    |.o  .. oo   o    |
    |+    .+.         |
    +----[SHA256]-----

  • Vos clés SSH se trouvent dans le répertoire ~/.ssh/.
    ls ~/.ssh
    
    Répertoire : C:\Users\Pierre\.ssh
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----        26/11/2020     12:02            464 id_ed25519
    -a----        26/11/2020     12:02            105 id_ed25519.pub
    -a----        25/11/2020     15:03           2214 known_hosts
Étape 1 terminée : votre paire de clés SSH (publique et privée) a bien été créée. Prochaine étape : copier la clé publique sur le serveur distant. 👍

Étape 2 : copier la clé publique sur le serveur distant

Pour établir la connexion SSH par clés SSH, il faut que notre clé publique soit présente dans le fichier ~/.ssh/authorized_keys d’un utilisateur sur le serveur distant.

Pour copier une clé publique sur le compte d’un utilisateur distant, suivez ces instructions :

  • Windows 10 :
    1. Ouvrez PowerShell.
    2. Saisissez la commande suivante :
      cat ~/.ssh/id_ed25519.pub | ssh <username>@<hostname> "cat >> ~/.ssh/authorized_keys"

      Remplacez username par le nom d’utilisateur et hostname par l’adresse IP ou le nom d’hôte du serveur.

    3. Entrez le mot de passe de l’utilisateur.
    4. Voilà, votre clé publique a bien été copiée dans le fichier ~/.ssh/authorized_keys de l’utilisateur sur le serveur distant !
  • Windows 8 ou 7 :
    1. Ouvrez Git Bash.
    2. Saisissez la commande suivante :
      ssh-copy-id <username>@<hostname>

      Remplacez username par le nom d’utilisateur et hostname par l’adresse IP ou le nom d’hôte du serveur.

    3. Entrez le mot de passe de l’utilisateur.
    4. Voilà, votre clé publique a bien été copiée dans le fichier ~/.ssh/authorized_keys de l’utilisateur sur le serveur distant !
  • Linux :
    1. Ouvrez le Terminal.
    2. Saisissez la commande suivante :
      ssh-copy-id <username>@<hostname>

      Remplacez username par le nom d’utilisateur et hostname par l’adresse IP ou le nom d’hôte du serveur.

    3. Entrez le mot de passe de l’utilisateur.
    4. Voilà, votre clé publique a bien été copiée dans le fichier ~/.ssh/authorized_keys de l’utilisateur sur le serveur distant !
Étape 2 terminée : votre clé publique a bien été copiée sur le serveur distant. Vous pouvez maintenant vous connecter en SSH en utilisant l’authentification par clés SSH. 👍

Étape 3 : se connecter en SSH par clés SSH

  1. Selon votre système d’exploitation :
    • Windows 10 : ouvrez PowerShell
    • Windows 8 ou 7 : ouvrez Git Bash
    • Linux : ouvrez le Terminal
  2. Connectez-vous au serveur distant en utilisant la commande suivante :
    ssh <username>@<hostname>

    Remplacez username par le nom d’utilisateur et hostname par l’adresse IP ou le nom d’hôte du serveur.

  3. Entrez la phrase de passe de votre clé privée (si vous en avez défini une).
  4. Voilà, vous êtes maintenant connecté à votre serveur !
Félicitations ! Vous avez réussi à vous connecter en SSH à un serveur en utilisant une authentification par clés SSH. 👍

Publicité

Forcer l’authentification par mot de passe

Une fois l’authentification par échange de clés SSH configurée, il s’agit de la méthode d’authentification par défaut pour vous connecter à votre serveur.

Si vous souhaitez forcer l’authentification par mot de passe, entrez la commande suivante :

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no <username>@<hostname>

Désactiver l’authentification par mot de passe

Pour désactiver l’authentification par mot de passe et n’utiliser que l’authentification par échange de clés SSH, suivez ces instructions :

  1. Connectez-vous au serveur.
    ssh <username>@<hostname>
  2. Éditez le fichier /etc/ssh/sshd_config.
  3. Remplacez la valeur de PasswordAuthentication par no.
  4. Redémarrez le service sshd :
    systemctl restart sshd

Liens utiles

 

Vous avez aimé cet article ?

Dites-le-nous !

Ne ratez pas nos prochains articles !

Suivez-nous sur :

Étiquettes
À voir également
Besoin d'aide ?

Malgré la lecture de l'article « Se connecter en SSH par échange de clés SSH », vous avez encore des questions qui vous trottent dans la tête ? Vous avez toujours les mêmes problèmes qu'au départ ? Vous êtes bloqué et vous ne savez plus quoi faire ?

Faites appel à la communauté du Crabe en posant votre question sur les forums !

Poser ma question
6 commentaires
Répondre à zelandoniiAnnuler
Connecté en tant que visiteur (connexion / s'inscrire)

Formulaire protégé par reCAPTCHA. Les Règles de confidentialité et les Conditions d'utilisation de Google s'appliquent.

Page 1 sur 1

  • bonjour

    ce que je comprends : afin d’établir une liaison SSh entre un client et un serveur, une clé publique est nécessaire sur le serveur, et une privée sur le client. Je ne comprends pas la logique :

    1 – on génère 2 clés sur le client ;

    2 – on transfert la clé publique vers le serveur avec la commande SSH ALORS QUE L’ON N’A PAS ENCORE pu établir la liaison SSH qui elle même nécessite la présence des clés … ?!?

    merci

    • Salut,

      Pour comprendre, il faut estimer que :

      0 – on a accès au terminal du serveur distant (par exemple à l’aide de l’outil fourni par l’hébergeur), et on y installe le module SSH s’il n’y est pas déjà.

      Ensuite le 1 et le 2 paraissent plus compréhensibles. 😉

  • Merci LeCrabe pour cet article clair et précis 🙂

  • bonsoir a tous
    je suis bloquée sur ssh depuis windows vers un vm linux.;a chaque fois connexion timeout malgre le fait que les ping entre les deux affiche pas d’erreur
    merci pour toute conseils
    p.s.putty ou wincsp marcheent pas non plus ,car j’ai voulu copier un fichier vers linux
    merci encore pour toute conseil.

  • Bonjour @Le Crabe,
    Super tuto tout fonctionne, mais je me demandais comment craquer cette sécurité en cas de réinstallation système donc écrasement des clés privée et publique qui se trouve sur le PC ?
    Merci d’avance pour ta réponse.

    • Salut zelandonii,

      Il faut absolument sauvegarder ta clé privée quelque part sur un autre support, car sinon ça se complique.

      Si tu n’as pas désactivé l’authentification par mot de passe, tu peux toujours te connecter à ton serveur en SSH via mot de passe.

      Sinon, la solution c’est de recréer une nouvelle paire de clés SSH, de te connecter au serveur en utilisant la console sur le site de l’hébergeur (si celui-ci le propose) et de recopier ta nouvelle clé publique dans le fichier ~/.ssh/authorized_keys.

471 utilisateurs actifs
Chargement en cours