Une clé SSH est en réalité une bi-clé (un couple clé publique et clé privée) permettant de renforcer la sécurité d’une connexion utilisant le protocole SSH (à condition bien sûr de respecter quelques règles de base).
L’idée de base est qu’on chiffre la connexion à l’aide de la bi-clé, la clé publique étant sur la machine cible, la clé privée étant chez l’utilisateur (ou la machine source éventuellement).
Principe
L’idée de ce type d’authentification est de ne pas faire circuler de secret directement pour l’établissement de la connexion (tel que le couple utilisateur/mot de passe). Ainsi, le mot de passe ne peut pas être intercepté lors de la communication !
Nous utiliserons donc une bi-clé. Pour se connecter sur un serveur (machine 2) avec une identité donnée, il faut (il suffit) d’associer la clé publique à l’identité voulue sur le serveur, et de prouver qu’on est en possession de la clé privée correspondante.
Pour établir la connexion, les deux machines qui parlent ensemble (la machine 1 de l’utilisateur, et la machine 2 où l’on souhaite se connecter de façon sécurisée) vont s’envoyer des messages chiffrés grâce à cette bi-clé. Toute la subtilité revient dans le mécanisme d’échange sécurisé entre les deux machines,
Pour envoyer des éléments chiffrés lors de l’échange, l’utilisateur sur la machine 1 doit donc utiliser sa clé privée, qu’il vaut mieux bien sûr protéger par une passphrase (il faut qu’elle soit protégée en accès afin que tout le monde ne puisse pas lire cette clé). La capacité que l’on a d’utiliser cette clé privée permet donc de prouver qu’on est bien l’utilisateur correspondant à la clé publique, ce qui assure l’accès à la machine 2, avec l’identité à laquelle on a associée la clé publique.
En pratique
Création de la bi-clé
La première étape est de construire la bi-clé, et différents outils le permettent.
ssh-keygen
Tout en ligne de commande. Il y a tout de même une astuce si vous souhaitez ensuite vous connecter à partir de PuTTY sous Windows (cf ci-dessous).
PuTTYgen
Très pratique sous Windows.
Installation de la clé publique
La clé publique doit être positionnée dans un fichier spécial, spécifique à l’identité demandée sur le serveur cible. Si vous souhaitez utiliser le mode de connexion par clé SSH pour l’utilisateur root
, il faudra donc installer la clé publique dans le répertoire utilisateur de root
(qui est en général /root
). Si vous souhaitez utiliser une clé pour un utilisateur user
, il faudra installer la clé publique dans le répertoire de l’utilisateur user
(qui est en général de la forme /home/user
).
Une fois dans le répertoire de l’utilisateur voulu sur la machine cible, il faut aller dans le répertoire .ssh
puis modifier le fichier authorized_key
(il peut y avoir des variantes, selon les configurations).
machine2$ vi /home/user/.ssh/authorized_key
Ce fichier contient les clés publiques autorisées pour cet utilisateur, au format ssh-rsa (ou ssh-dsa). Par exemple :
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjMMXnPG6n5j39K924xSAdsxQ6KD0QS55sdw+ s/AB+EkfNJ4l5rWAesm1KhyjsTTb399lOAhDr26qmHt4Zt8yXZzfuwWA+MQI6QL0 PwR2gL6B9F7ogJtqqTmPiXTXu8fTLvzFYW+1VejHfSNBEBuE0Td5R4LjEXcmxorf vrODeIzQaz5wk2anXaCjRVBiiPi69l4n8YCHyqVPcuiHBxRxAfQMjLpo2RYL6ofb ZzaxHnQfvfs0h+YntFXDTVL3sMuU8zhyGrGdfI9MpYymDb8Y3hd/4MAUhUrgtg57 88Pbp/xfX79b+qB4QRjnvNLTLi4biPKqU1pbYlvkuhx/aO36qQ==
Installation et utilisation de la clé privée
Connexion sous Linux
La connexion se fait en ajoutant quelques paramètres à la commande ssh
.
Connexion sous Windows
PuTTy fait sous Windows un petit caprice au sens où il va demander un format particulier pour la clé privée.
Sources
- http://doc.fedora-fr.org/wiki/SSH_:_Authentification_par_cl%C3%A9
- http://marc.terrier.free.fr/docputty/Chapter8.html