Utilisation de clefs et raccourcis ssh

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

Release Le contenu de ce document a été validé. Vous pouvez suivre ses indications sans inquiétude.
Attention: Cependant, si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le forum.

Vous en avez marre de taper 231 fois votre mot de passe SSH et vous en avez marre surtout si le nom de la machine est nomtreslong.lichtenstein.loin et le login bouvardetpecuchet.flaubert. On souhaiterait faire directement :

ssh labas

Pour cela nous allons créer une clef privée et une clef publique. L'authentification se fera via cette paire de clefs.

Principe

Nous allons créer un couple de clef : une privée et une publique. La clef publique est sur le serveur et la clef privée reste sur le poste client. Il est important que la clef privée reste secrète c'est elle qui remplace le mot de passe habituel. La clef publique peut rester publique, on ne peut pas déduire la clef privée via la clef publique.

Lors de la connexion au serveur :

  • le serveur va envoyer un « chalenge » au client. C'est un bout de données aléatoire
  • le client va chiffrer, grâce à la clef privée, ces données et les renvoyer au serveur
  • le serveur va tenter de déchiffrer les données via les clefs publiques qu'il possède
  • si le serveur arrive à déchiffrer les données et à retomber sur les données initiales, il accepte la connexion

Important

Il est important de bien comprendre comment cela fonctionne et quelle est la sécurité que cela apporte. Si vous utilisez un seul couple de clef et que vous avez une copie de votre clef privée sur toutes vos machines, cela augmente les chances qu'elle soit récupérer et qu'on puisse accéder à votre serveur. Il est probablement préférable de générer un couple de clef par client, et ainsi si l'une des clef est compromise il suffit de la désactiver coté serveur.

Fabrication des clefs sur le "client"

Taper dans un terminal (l'option -f permet de choisir le nom et l'emplacement du fichier) :

$ ssh-keygen -t dsa -f ~/.ssh/labas

 AVERTISSEMENT : Les clés DSA sont considérées maintenant comme vulnérables et ne sont pas prises en compte par défaut par les dernières versions d'OpenSSH (à moins de le préciser dans le fichier de configuration), il faut donc utiliser des clés ECDSA ou ed25519, cette dernière étant considérée comme la plus performante.

Il est donc conseillé d'utiliser ce chiffrement aujourd'hui:

$ ssh-keygen -t ed25519 -a 100 -f ~/.ssh/labas

Si l'option -f n'est pas donnée le programme vous demanderas un nom de fichier. Pour vous aider à gérer vos clefs vous pouvez leur ajouter un commentaire avec l'option -C :

$ ssh-keygen -t ed25519 -a 100 -f ~/.ssh/labas -C "Clef vers serveur labas"

Taper <return> (dans le terminal) pour la passphrase.

Configuration de ssh sur le "client"

Éditer (ou créer) le fichier ~/.ssh/config et rajouter

Host labas
HostName nomtreslong.lichtenstein.loin
User bouvardetpecuchet.flaubert
PasswordAuthentication no
IdentityFile ~/.ssh/labas

Configuration du serveur SSH

Sur la machine nomtreslong.lichtenstein.loin, il faut ajouter notre clef publique.

  • Soit en exécutant (à partir du "client") simplement la commande suivante :
ssh-copy-id -i ~/.ssh/labas.pub bouvardetpecuchet.flaubert@nomtreslong.lichtenstein.loin

Remarque: Si le serveur ssh distant est sur un port différent de celui par défaut; il faudra taper ceci (remplacez xxx par le n° de port)

ssh-copy-id -i ~/.ssh/labas.pub -p xxx bouvardetpecuchet.flaubert@nomtreslong.lichtenstein.loin

Remarque pour squeeze: (Il faut ajouter des guillemets - remplacez xxx par le n° de port):

ssh-copy-id -i ~/.ssh/labas.pub "bouvardetpecuchet.flaubert@nomtreslong.lichtenstein.loin -p xxx"
  • Soit en rajoutant (sur le serveur SSH) à la fin du fichier ~/.ssh/authorized_keys le contenu du fichier ~/.ssh/labas.pub qui a été créé sur votre machine. Ce fichier est du texte pur et un copier/coller suffit.

Si le fichier ~/.ssh/authorized_keys n'existe pas, le créer.

Changer les droits de ~/.ssh/authorized_keys en 600 (ou 644 qui marche aussi).

Test final

Pour se connecter sur la machine voulue, au lieu de

$ ssh bouvardetpecuchet.flaubert@nomtreslong.lichtenstein.loin

et de taper le mot de passe, il suffit de faire

$ ssh labas

Pour copier un fichier, un

$ scp fichier labas:~

marchera

Problèmes éventuels

Ça ne marche pas, il demande les mots de passe. Vérifiez que les droits de ~/.ssh/authorized_keys soient rw-------, sinon la reconnaissance par clefs est désactivée. Il faut également vérifier à qui appartient le répertoire ~ et ses droits. Méfiez vous également des passphrases si vous voulez une connexion automatique (scp par exemple). Éventuellement, si les soucis demeurent, regardez la configuration de /etc/ssh/sshd_config sur nomtreslong.lichtenstein.loin. Elle est peut être exotique et exige quoiqu'il arrive la reconnaissance par mot de passe. Il doit y avoir l'option

PubkeyAuthentication yes

François Boisson Ce tutoriel a un niveau de difficulté : Expert