Authentification SSH sécurisée avec une paire de clés

Testez-le maintenant pour 1 euro seulement !
Vous avez de grands projets d’hébergement avec beaucoup de ressources ? Avec le CloudServer (VPS) de hosting.fr, ce n’est pas un problème. Grâce à notre vaste gamme d’outils d’hébergement, vous bénéficiez d’une liberté absolue. Bien entendu, vous pouvez choisir librement le système d’exploitation en appuyant sur un bouton.
Réserver un serveur cloud maintenant

Introduction

SSH signifie “Secure Shell” et est un protocole réseau qui permet d’établir une connexion sécurisée, authentifiée et chiffrée via un réseau à un serveur. À l’origine, il a été développé pour un accès sécurisé aux lignes de commande distantes. Il existe également des extensions, comme “SFTP”, pour le transfert sécurisé de fichiers et de répertoires. Dans cet article, nous allons montrer comment, au lieu d’un mot de passe, une paire de clés cryptographiques peut être utilisée pour l’authentification. Une paire de clés est générée, la longueur de la clé étant nettement supérieure à celle d’un mot de passe. Grâce à l’authentification par clé publique SSH, une connexion unique peut également être réalisée de manière simple, en stockant la clé publique sur plusieurs serveurs.

SSH est également souvent utilisé comme moyen de transfert pour la gestion distribuée des versions de code source git.

Comment fonctionne l’authentification avec une paire de clés ?

Pour l’authentification, le serveur et le client génèrent chacun deux clés : une clé publique et une clé privée. La clé privée doit toujours rester secrète, tandis que la clé publique peut être rendue publique. Il est impossible de déduire la clé privée à partir de la clé publique. Cependant, sans connaître la clé privée, il est possible, en utilisant la clé publique d’une personne, de vérifier si des données ont été signées avec la clé privée de cette personne. Ce mécanisme constitue la base de l’authentification lors de l’établissement d’une connexion SSH.

Le processus d’établissement de la connexion du client au serveur par l’utilisation de l’authentification par clé publique se déroule de manière simplifiée comme suit :

  1. Le client établit une connexion avec le serveur.
  2. Le serveur envoie sa clé publique au client.
  3. Le client compare la clé publique envoyée par le serveur avec celle qu’il connaît pour ce serveur. Si la clé publique différente de celle qui est connue du client, la connexion est interrompue. Si le client ne connaît pas la clé publique du serveur, il demande à l’utilisateur s’il doit enregistrer l’empreinte digitale du serveur lors de la première connexion.
  4. Le serveur vérifie si le client possède la clé privée à l’aide de la clé enregistrée sur lui.

La clé privée est généralement chiffrée avec une phrase de passe sur l’ordinateur personnel. Avant utilisation, la clé privée doit donc d’abord être déchiffrée. Pour éviter cela à chaque connexion sur un serveur, la clé privée déchiffrée peut être stockée dans un “SSH-Agent”, permettant ainsi aux clients SSH locaux d’y accéder au besoin. L’entrée d’un mot de passe à chaque connexion sur un serveur est donc évitée.

Stockage de la clé publique sur le système cible

Le serveur OpenSSH couramment utilisé sous Linux recherche généralement la clé publique dans le fichier ~/.ssh/authorized_keys lors de la connexion du client. L’abréviation ~ représente votre répertoire personnel sur le serveur, par exemple /home/bob/. Si la clé correspondante y est trouvée, la connexion de l’utilisateur est autorisée.

Vous devez donc copier votre clé publique dans le fichier ~/.ssh/authorized_keys sur le serveur. Votre clé publique se trouve généralement dans le fichier ~/.ssh/id_rsa.pub sur l’ordinateur où vous avez généré votre paire de clés.

Clients Linux

Génération d’une paire de clés

Une paire de clés peut être générée sous Linux avec la commande

ssh-keygen -t rsa

Ici, vous serez invité à choisir une phrase de passe. Il s’agit d’un mot de passe qui chiffre la clé privée stockée dans un fichier sur votre ordinateur pour la protéger contre les accès non autorisés.

Pour éviter de devoir copier la clé publique manuellement, il existe l’outil ssh-copy-id sous Linux. Cet outil peut être utilisé comme suit, par exemple pour l’utilisateur “bob” :

ssh-copy-id bob@server.example.com

Vous serez invité à entrer le mot de passe pour la connexion SSH, et l’outil enregistrera la clé publique sur le serveur. Ensuite, vous pouvez tester la connexion sur le système cible :

ssh bob@server.example.com

Utilisation de l’agent SSH

Comme vous avez généralement protégé votre clé privée avec une phrase de passe, vous devrez la saisir à chaque connexion au serveur SSH. Pour éviter cela, un daemon a été créé qui s’exécute en arrière-plan sur votre ordinateur et stocke temporairement la phrase de passe en mémoire. Sur la plupart des ordinateurs de bureau Linux, ce daemon est démarré automatiquement, de sorte qu’en exécutant la commande

ssh-add

la clé privée existante déverrouillée peut être ajoutée à l’agent.

En cas d’erreur parce que le daemon ne fonctionne pas, il peut être démarré avec la commande

eval `ssh-agent`

en définissant automatiquement les variables d’environnement appropriées dans le shell actuel.

Clients Windows

Depuis la version 1709, Windows 10 inclut également un client SSH par défaut. Il n’est donc pas nécessaire d’installer un logiciel supplémentaire, comme sur la plupart des systèmes Linux. Sur les anciennes versions de Windows, vous pouvez utiliser par exemple l’outil Putty.

Pour utiliser le client, veuillez démarrer Microsoft PowerShell.

Ici, vous pouvez générer une nouvelle paire de clés avec la commande ssh-keygen -t rsa, où vous serez également invité à saisir une phrase de passe :

ssh-keygen sous Windows

Vous pouvez alors afficher votre clé publique avec cat ~/.ssh/id_rsa.pub :

ssh-keygen sous Windows

Votre clé publique doit maintenant également être stockée sur le serveur. Pour ce faire, connectez-vous au serveur avec la commande ssh bob@example.com et modifiez le fichier ~/.ssh/authorized_keys avec un éditeur de texte comme “nano” :

nano ~/.ssh/authorized_keys

Après avoir entré votre clé publique sur le serveur, vous ne devriez plus être invité à entrer un mot de passe lors de la connexion au serveur.

Sécurisation du système cible

Une fois les clés publiques stockées sur le serveur Linux, il est conseillé d’augmenter la sécurité en désactivant l’authentification par mot de passe sur le serveur. Avant de désactiver l’authentification par mot de passe, veuillez vérifier si la connexion via l’authentification par clé publique SSH fonctionne sans avoir à entrer de mot de passe pour le serveur.

Cela peut être configuré dans le fichier /etc/ssh/sshd_config sur le serveur avec la ligne suivante :

PasswordAuthentication no

Après avoir effectué des modifications dans ce fichier, le serveur SSH doit être redémarré. Cela peut se faire sur les systèmes Linux utilisant “systemd” en saisissant la commande suivante :

systemctl restart ssh.service

La connexion SSH en cours est généralement maintenue.

Transfert de fichiers avec SCP

Le protocole “Secure Copy” (SCP), basé sur SSH, permet de transférer des fichiers et des répertoires, ce qui peut être effectué par exemple pour un répertoire à l’aide de la commande suivante :

scp -r /home/bob/Dokumente/  bob@server.example.com:/home/bob/Backup/

De plus, il existe le protocole SFTP, qui, à la différence de SCP, permet également le transfert des droits de répertoire. Il fonctionne cependant de manière interactive, ce qui rend le transfert des fichiers un peu plus lent. Pour SFTP, vous pouvez par exemple utiliser le client FileZilla.

Les clients des deux protocoles peuvent généralement accéder à un agent SSH.

Conclusion

Cet article a montré comment générer une paire de clés et y accéder à distance sur des serveurs. Ce type d’authentification offre non seulement plus de sécurité, mais évite également de devoir entrer un mot de passe pour chaque nouvelle connexion SSH.

Références

N'hésitez pas à vous inscrire à notre newsletter



Nous vous remercions de votre inscription à la newsletter hosting.fr.
Détails du contrat ADV Accord de traitement des données RGPD DP