Utilisation d'une paire de clé avec SSH

De HomeServer.DIY.
Aller à : Navigation, rechercher

Un mot de passe, c'est bien, c'est facile à retenir, utilisable partout... Mais un mot de passe, c'est aussi un point faible dans la chaîne de sécurité et ce, malgré tous les moyens mis en place pour le sécuriser au maximum. Il existe donc une solution avec ssh: utiliser une clé privée et une clé publique afin de vous connecter à votre serveur à distance (celui-ci connaissant votre clé publique!)

Note : Dans la suite de ce tutoriel, je considère qu'openssh-server est déjà installé sur votre serveur.

Génération de votre paire de clé depuis votre client "Linux"

Il existe deux types de clés qui possèdent chacun leurs avantages et leur défaut mais dans la suite de ce tutoriel, j'utiliserais une clé de type RSA d'une longueur de 4096 (2048 étant considéré comme le minimum vital avec une clé de type RSA).

Depuis votre poste client, lancez la commande suivante:

ssh-keygen -t rsa -b 4096

On vous demandera le répertoire de destination de votre paire de clés (laissez le par défaut) et un "passphrase", faites vous plaisir, plus il y a de mots, mieux c'est! Pas besoin de caractères spéciaux, un simple slogan suffit ;) Par contre, il faut s'en souvenir car il vous sera demandé à votre connexion par la suite! La commande exécutée, vous obtenez une clé privée (~/.ssh/id_rsa), une clé publique à destination de votre serveur (~/.ssh/id_rsa.pub) et une jolie image random qui ne vous sera pas utile :) .

Maintenant copions votre clé publique sur votre serveur ssh :

ssh-copy-id -i ~/.ssh/id_rsa.pub user@adresse_serveur

On vous demandera alors le mot de passe de votre compte (et oui, il n'est pas encore mort et enterré!).

Chose faite, il ne reste plus qu'à tester:

ssh user@adresse_serveur

Vous obtiendrez donc

Enter passphrase for key '/home/user/.ssh/id_dsa':

Il ne vous reste plus qu'à rentrer votre passphrase et vous voilà connecté!

Génération de votre paire de clés depuis votre client Windows

Nous allons utiliser Putty pour pouvoir s'authentifier sur le serveur SSH en utilisant une paire de clés. Pour générer cette paire de clés, nous allons utiliser la même technique utilisée précédemment pour le client "linux" mais cette fois-ci du côté serveur. En effet, Putty n'est pas apte à créer des clés utilisables par OpenSSH, c'est donc le serveur qui va les créer.

Sur votre serveur (en local ou à partir de SSH), créez une paire de clés:

ssh-keygen -t rsa -b 4096

On vous demandera le répertoire de destination de votre paire de clés (laissez le par défaut) et un "passphrase", faites vous plaisir, plus il y a de mot, mieux s'est! Pas besoin de caractères spéciaux, un simple slogan suffit ;) Par contre, il faut s'en souvenir car il vous sera demandé à votre connexion par la suite! La commande exécutée, vous obtenez une clé privée (~/.ssh/id_rsa), une clé publique à destination de votre serveur (~/.ssh/id_rsa.pub).

Ajoutez la clé publique à la liste des clés du serveur ssh. Vu que normalement, il faut copier le contenu du fichier ~/.ssh/id_rsa.pub dans le fichier ~/.ssh/authorized_keys, je vous propose une commande qui le fait à votre place:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

Dans le fait, je redirige simplement le flux de sortie de la commande cat (qui permet d'afficher le contenu d'un fichier) vers ~/.ssh/authorized_keys.

Récupérez votre clé privée (~/.ssh/id_rsa) afin de la copier sur votre client Windows (soit en passant par une clé usb ou soit en utilisant WinSCP par exemple). Sous votre client Windows, lancez PuttyGen.

PuttyGen.png

Cliquez sur le bouton "Load". Par défaut, PuttyGen ne liste que les clés sous son format. Dans l'explorateur qui vient de s'ouvrir, il faut donc choisir "All Files (*.*)" dans le type. Choix type - PuttyGen.png


Il ne vous reste plus qu'à sélectionner votre clé. Entrez votre "passphrase" dans la fenêtre qui s'ouvre et une nouvelle fenêtre vous avertira que la clé a bien été importée. Chose faite, vous pouvez sauvegarder la clé privée importée en cliquant sur le bouton "Save private key".

Maintenant, quittez PuttyGen et lancez Putty. Entrez l'adresse ip ou le nom de votre serveur ainsi que son port. Déroulez "SSH" dans le menu de gauche (1) afin de sélectionner "Auth" (2). A la ligne "Private key file for authentification:", cliquez sur "Browse..." (3) et sélectionnez la clé précédemment importée.

Choix clé - Putty.png

Maintenant, lors de la connexion, votre login et votre "passphrase" vous serons demandés.

Désactivation de la connexion par mot de passe

Paire de clés créée et testée, il ne vous reste plus qu'à désactiver la connexion par mot de passe (sinon, ce tutoriel serait inutile). Sur votre serveur, modifiez le fichier /etc/ssh/sshd_config et cherchez la ligne:

PasswordAuthentication yes

ou

#PasswordAuthentication yes

et remplacez le par

PasswordAuthentication no

Maintenant, redémarrez le serveur ssh:

service sshd restart


Voilà votre serveur sécurisé! Attention, il va falloir recommencer la manœuvre avec chaque pc client ou transporter sa clé privée entre chaque PC!