Clé SSH : fonctionnement et utilisation
Auteur : Rédaction Domeny.ForSale Publié le
En bref : Une clé SSH sert à confirmer votre identité lors d’une connexion sécurisée à un serveur ou à un service, par exemple un dépôt de code. En pratique, vous utilisez une paire : une clé publique, que vous transmettez au service, et une clé privée, qui reste sur votre appareil. Cette méthode de connexion peut remplacer le mot de passe du compte, mais elle exige de protéger la clé privée.
Comment fonctionne l’authentification par clé SSH ?
SSH, pour Secure Shell, est un protocole permettant de communiquer de manière sécurisée avec un autre ordinateur sur un réseau. Il sert notamment à administrer des serveurs, à transférer des fichiers via SFTP et à communiquer avec des dépôts Git. La connexion SSH est chiffrée, que vous vous authentifiiez par mot de passe ou par clé : la clé change avant tout la manière de confirmer votre identité.
Une paire de clés comprend deux éléments liés mathématiquement :
- La clé publique permet de vérifier que la personne qui se connecte possède la clé privée correspondante. Vous l’ajoutez sur le serveur ou dans les paramètres du service.
- La clé privée sert à créer des signatures cryptographiques confirmant votre identité. Vous ne l’envoyez pas à l’administrateur et ne la collez pas dans l’interface du service.
Lors de l’authentification, le programme SSH utilise la clé privée pour signer des données liées à la connexion. Le serveur vérifie la signature à l’aide de la clé publique enregistrée. La clé privée elle-même n’est pas transmise au serveur. Avec un algorithme moderne correctement choisi, il est pratiquement impossible de reconstituer la clé privée à partir de la clé publique.
Quand utiliser une clé SSH plutôt qu’un mot de passe ?
Si vous administrez un VPS, c’est-à-dire un serveur privé virtuel, vous pouvez vous connecter avec une clé au lieu de saisir le mot de passe du compte. Lorsque vous travaillez avec Git, la clé peut confirmer votre identité lors de la récupération et de l’envoi de modifications. Cela ne signifie toutefois pas que vos commits sont automatiquement signés : la signature des commits est une fonction distincte qui nécessite une configuration.
Prenons un exemple : deux personnes s’occupent du site d’une entreprise. Au lieu de partager un mot de passe, chacune crée sa propre paire de clés, puis l’administrateur ajoute leurs clés publiques aux comptes correspondants. Lorsque l’une d’elles cesse de travailler pour l’entreprise, sa clé peut être supprimée sans remplacer celle de l’autre personne. Des comptes système distincts facilitent également la séparation des droits d’accès.
Les clés limitent le risque qu’un mot de passe soit deviné par des tentatives de connexion automatisées. Elles ne protègent cependant pas contre tout : la compromission de l’appareil ou d’une clé privée non protégée peut donner accès à un attaquant. L’ajout d’une clé ne désactive pas non plus, à lui seul, la connexion par mot de passe sur le serveur.
Comment créer une paire de clés SSH ?
Sur un système où OpenSSH est installé, ouvrez un terminal. Vérifiez d’abord le dossier .ssh dans votre répertoire personnel, afin de ne pas écraser des clés existantes. Pour créer une nouvelle paire utilisant l’algorithme moderne Ed25519, exécutez la commande suivante :
ssh-keygen -t ed25519 -C "portable-travail"
L’option -C ajoute un commentaire permettant d’identifier plus facilement la clé ; elle n’accorde aucun droit d’accès. Le programme vous demandera où enregistrer les fichiers ainsi qu’une phrase de passe protégeant la clé, également appelée passphrase. Celle-ci protège le fichier de la clé privée et n’est pas le mot de passe du compte sur le serveur. Les environnements anciens ou particuliers peuvent nécessiter un autre algorithme : vérifiez les exigences du fournisseur.
Avec le nom par défaut, deux fichiers seront créés :
~/.ssh/id_ed25519— la clé privée ; gardez-en le contrôle exclusif.~/.ssh/id_ed25519.pub— la clé publique ; c’est son contenu que vous ajoutez au service.
Le symbole ~ désigne le répertoire personnel de l’utilisateur. La clé publique se présente généralement sous la forme d’une longue ligne commençant par ssh-ed25519. Copiez toute cette ligne dans le champ des clés SSH de l’interface du fournisseur. Sur un serveur utilisant OpenSSH, on l’ajoute généralement au fichier ~/.ssh/authorized_keys du compte concerné, sans supprimer les entrées existantes. Les droits d’accès au dossier et au fichier doivent également être correctement définis sur le serveur.
Après avoir ajouté la clé, testez la connexion :
ssh -i ~/.ssh/id_ed25519 utilisateur@adresse-serveur
Remplacez le nom d’utilisateur et l’adresse par vos propres informations. Si vous modifiez la configuration des accès, laissez la session actuelle ouverte jusqu’à ce que vous ayez réussi à vous connecter dans une deuxième fenêtre.
Clé de l’utilisateur et clé du serveur
Lors de la première connexion, SSH peut afficher l’empreinte de la clé du serveur, c’est-à-dire son identifiant abrégé. Il ne s’agit pas de votre clé d’utilisateur : cette empreinte sert à confirmer que vous vous connectez à la bonne machine. Comparez-la avec les informations obtenues par un canal indépendant et fiable, par exemple auprès de l’administrateur ou dans l’interface du fournisseur.
N’ignorez pas les avertissements signalant un changement de clé du serveur. Ce changement peut résulter d’une réinstallation légitime, mais aussi d’une usurpation de l’identité du serveur. Vérifiez d’abord sa cause, plutôt que de supprimer sans contrôle l’entrée du fichier known_hosts, dans lequel le client SSH mémorise les serveurs reconnus.
Comment conserver une clé en sécurité et la révoquer ?
Protégez la clé privée par une phrase de passe robuste et ne la placez pas dans un dépôt, un message ou une demande d’assistance technique. Un agent SSH est un programme qui peut conserver la clé déverrouillée en mémoire et l’utiliser pour signer, ce qui réduit le nombre de fois où vous devez saisir la phrase de passe.
Utiliser des clés distinctes pour chaque appareil facilite le retrait de l’accès si l’un d’eux est perdu. Si vous soupçonnez une fuite de votre clé privée, supprimez la clé publique correspondante de tous les serveurs et services qui l’acceptent, puis générez une nouvelle paire. Changer la phrase de passe du fichier local ne révoque pas une copie volée.
Avant de commencer à utiliser une nouvelle clé, vérifiez dans l’interface du service comment la supprimer et comment récupérer l’accès en cas de perte de l’appareil. Ainsi, une panne de votre ordinateur portable ne vous privera pas de votre seul moyen d’administrer le serveur.
À lire aussi : Que signifie www ?
