Clés SSH

De Ensiwiki
Révision de 29 septembre 2014 à 07:48 par Moym (discussion | contributions) (Enregistrement auprès du serveur sur lequel on veut se connecter : telesun -> pcserveur)

Aller à : navigation, rechercher


Windows.png  Windows Tux.png  Linux 

Nous allons apprendre, dans ce tutoriel, à générer un couple clef publique / clef privée.

Les utilités premières d'un tel couple sont:

  • l'authentification ssh sans mot de passe (vous déclarez votre ordinateur en tant que hôte de confiance)
  • être reconnu comme l'entité qui a généré le couple ;
  • authentification en tout genre en un mot (Subversion, Git, ...).

Nous verrons, ici, comment nous connecter à un serveur distant sans mot de passe.

Spécifique EnsimagUne partie de ces manipulations est vue, anciennement, au TP4 en réseaux première année.


Sous Unix/Linux

Attention : Par sécurité, copiez le dossier .ssh à la racine de votre compte sur votre ordinateur pour revenir en arrière. Pour ce faire:

$ cp -r ~/.ssh/ ~/.ssh-old/

et pour restaurer en cas de soucis :

$ rm -r ~/.ssh/
$ mv ~/.ssh-old/ ~/.ssh/

Génération des clefs

Sur votre machine, faîtes dans le dossier de votre choix:

$ ssh-keygen -t rsa 

Ce qui nous donne:

guillaume@CentraServ:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guillaume/.ssh/id_rsa):
Created directory '/home/guillaume/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/guillaume/.ssh/id_rsa.
Your public key has been saved in /home/guillaume/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx guillaume@CentraServ

Deux fichiers sont alors créés dans le dossier .ssh/ à la racine de votre compte:

  1. id_rsa contenant la clé privée à ne communiquer sous aucun prétexte ;
  2. id_rsa.pub contenant la clé publique.

Pour la passphrase, vous pouvez décider de ne rien mettre, dans quel cas n'importe qui ayant accès à votre clé privée (i.e. accès à votre PC) pourra se connecter à tous les serveurs auxquels vous avez vous-même accès. Si vous utilisez une passphrase non vide, il peut être intéressant d'utiliser ssh-agent (voyez ci-dessous).

Enregistrement auprès du serveur sur lequel on veut se connecter

Sur le serveur distant, allez dans le dossier .ssh/ à la racine de votre compte et créez ou éditez le fichier authorized_keys. Ajoutez-y à la fin le contenu du fichier id_rsa.pub.

Par exemple, si vous voulez pouvoir vous identifier sur pcserveur, vous pourriez faire quelque chose comme :

chezvous $ scp ~/.ssh/id_rsa.pub votrelogin@pcserveur.imag.fr:~/.ssh/id_rsa.pub.tmp
chezvous $ ssh votrelogin@pcserveur.ensimag.fr
pcserveur $ cat ~/.ssh/id_rsa.pub.tmp >>~/.ssh/authorized_keys
pcserveur $ rm ~/.ssh/id_rsa.pub.tmp

Déconnectez-vous, vous devriez pouvoir vous reconnecter en utilisant votre clef plutôt que votre mot de passe. Si vous aviez mis une passphrase tout à l'heure, elle vous sera demandée ici ; la différence avec un mot de passe est que la passphrase ne transite jamais sur le réseau ; elle est simplement utilisée localement pour décoder votre clef.

Ne pas avoir à retaper la passphrase

Il est possible de n'entrer votre passphrase qu'une seule fois. Pour cela, nous allons utiliser ssh-agent. Faites simplement, au début de votre session :

$ eval $(ssh-agent)    # démarre l'agent
$ ssh-add              # ajoute votre clef

Votre passphrase vous sera demandé une fois, et lors de vos connexions, celui-ci sera connu et vous n'aurez plus à le taper !

Veuillez noter que la manipulation donnée ici n'est valide que dans une seule console ; si vous voulez le même comportement pour tout votre environnement graphique, il faudra vous débrouiller pour lancer ssh-agent avec votre bureau graphique ; les opérations spécifiques nécessaires varient d'un environnement à un autre. En pratique, la limitation de la seule console n'est pas trop handicapante (tant que vous ne la fermez pas par mégarde) : tous les programmes lancés depuis cette console seront sous l'effet du ssh-agent (p.ex. si vous utilisez Emacs avec /ssh:, vous avez tout intérêt à le lancer depuis la même console).

Sous Windows avec Putty

AttentionCette manipulation s'inscrit dans la continuité de l'utilisation de Putty, il faudra adapter les instructions en cas d'une autre utilisation, mais ne vous inquiétez pas, les profs auront pensé à vous.


PuttyGen est un utilitaire qui est fournie avec l'installateur de Putty. Vous pouvez le récupérer ici sinon: PuttyGen.

Fenêtre principale de PuttyGen

Pour commencer la création de votre trousseau de clés, rien de plus simple. Vérifiez que SSH-2 RSA est coché. Cliquez sur Generate et bougez votre souris sur la fenêtre tant que la barre d'avancement n'est pas pleine.

Une fois que c'est bon, l'empreinte de la clef est affichée. Cliquez sur Save Public Key et Save Private Key pour enregistrer vos clefs.

Etape 1: se faire connaitre du serveur sur lequel on veut se connecter

Sur le serveur distant, allez dans le dossier .ssh/ à la racine de votre compte et créez ou éditez le fichier authorized_keys. Ajoutez-y à la fin le contenu du fichier id_rsa.pub.

Etape 2: Convertir la clé privée pour Putty

Si elle a été faite avec PuttyGen, sautez cette étape. Sinon, rapatriez id_rsa et dans PuttyGen (Clés SSH), dans le menu Conversions cliquez sur Import Key. Sélectionnez le fichier id-rsa et dans la fenêtre principale de PuttyGen, cliquez sur Save private key avec le nom de votre choix. Vous obtenez un fichier dont l'extension est ppk.

Etape 3: Associer votre clef privée au profil de Putty

Indiquer votre clé privée à Putty
  1. Ouvrez Putty.
  2. Chargez votre profil en cliquant sur son nom puis sur Load.
  3. Dans les catégories à gauche, développez Connection pui SSH puis Auth.
  4. En bas de la zone principale, cliquez sur Browse et désignez le fichier ppk de la clé privée.
  5. Revenez dans la catégorie "Session" et cliquez sur Save pour sauver votre profil
  6. Lancez la connexion et votre terminal s'ouvre sans demander de mot de passe.


Autres documentations