Génération de clés pour une utilisation de ssh sans mot de passe

Joël Brogniart

Historique des versions
Version 17 juillet 2004
Mise au format xml de notes de travail.

Lors d'une connexion ssh vers un serveur, ssh demande son mot de passe à l'utilisateur désirant se connecter.

  [villon:~] brogniar% ssh brogniar@villon.univ-lyon2.fr
  brogniar@villon.univ-lyon2.fr's password:
    

Malheureusement ce comportement n'est pas pratique lors que l'on veut écrire des scripts utilisant une connexion ssh.

Pour éviter la demande de mot de passe, il est possible de fournir au serveur la clé publique de l'utilisateur ayant à se connecter et d'autoriser les connexions au serveur avec cette clé. Si l'utilisateur possède la clé privée correspondante, le mot de passe ne sera pas demandé. Il faut aussi prendre toutes les précautions utiles pour éviter que la clé privée ne soit récupérée par un utilisateur mal intentionné qui possèderait alors tous les droits du possesseur réel de la clé.

Mise en œuvre

Dans un premier temps il faut créer une paire de clés privée et publique pour l'utilisateur devant se connecter sans mot de passe. Bien sûr, il ne faut pas associer de mot de passe avec les clés. Pour cela on utilise la commande ssh-keygen en gardant les options par défaut.

  [villon:~] brogniar% ssh-keygen -t dsa
  Generating public/private dsa key pair.
  Enter file in which to save the key (/Users/brogniar/.ssh/id_dsa): 
  Enter passphrase (empty for no passphrase): 
  Enter same passphrase again: 
  Your identification has been saved in /Users/brogniar/.ssh/id_dsa.
  Your public key has been saved in /Users/brogniar/.ssh/id_dsa.pub.
  The key fingerprint is:
  86:a4:61:c8:c5:b3:11:3e:33:8a:e7:c5:9a:6c:bf:c2 brogniar@villon.univ-lyon2.fr
        

L'étape suivante consiste à transmettre la clé publique au serveur où l'utilisateur veut se connecter.

  [villon:~] brogniar% scp .ssh/id_dsa.pub brogniar@honeypot.univ-lyon2.fr:/Users/brogniar/.ssh/id_dsa.pub.brogniar.villon
  brogniar.honeypot.univ-lyon2.fr's password: 
  id_dsa.pub                                            100%  617     4.2MB/s   00:00
        

Il faut ensuite se connecter au serveur pour ajouter la clé transmise à la liste des clés autorisées.

  [villon:~] brogniar% ssh brogniar@honeypot.univ-lyon2.fr
        

Une fois connecté sur le serveur, il faut ajouter la clé aux clés authorisées. Ceci se fait en ajoutant la clé au fichier authorized_keys en faisant attention de ne pas endommager ce fichier car il contient peut-être déjà des clés pour d'autres machines.

  [honeypot:~] brogniar% cat .ssh/id_dsa.pub.brogniar.villon >> .ssh/authorized_keys
  [honeypot:~] brogniar% rm .ssh/id_dsa.pub.brogniar.villon
        

Tout est terminé. Il faut maintenant quitter la session ssh (ctrl-D) et essayer une nouvelle session ssh et si tout s'est bien passé, le mot de passe n'est pas nécessaire.

Bibliographie

OpenSSH team, OpenSSH project, <http://www.openssh.org/>.