Connexion à l'aide des clés publiques et privées

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%


Sommaire

Principes généraux

Lors de la connexion à un serveur distant, le protocole SSH peut utiliser différentes méthodes d'authentification. La méthode la plus connue est l'authentification par mot de passe. Lorsque l'on doit se connecter à répétition à plusieurs serveurs par SSH, il peut devenir fastidieux d'entrer son mot de passe à chaque fois. On peut alors utiliser une paire de clés, une publique et l'autre privée. On envoie la clé publique sur le serveur où on veut se connecter. Lors de la connexion, seule la personne qui possède la clé privée correspondant à la clé publique arrive à se connecter.

Pour utiliser la méthode d'accès par clés publique et privée, on procède ainsi :

  • sur la machine locale (celle où on tape au clavier), on produit une paire de clés, associée à un mot de passe;
  • on copie la clé publique (et jamais la clé privée!) sur le serveur distant;
  • sur le serveur distant, on place la clé publique dans la liste des clés publiques autorisées;
  • on s'assure que le programme qui gère l'accès à la clé privée (appelé agent) tourne sur la machine locale;
  • on entre le mot de passe associé à la clé privée à l'aide du programe prévu à cette fin;
  • on établit des connexions avec le protocole SSH.

Note importante de sécurité

Sur certains serveurs de Calcul Québec, on a besoin d'une paire de clés sans mot de passe pour le fonctionnement de certains logiciels dont le lancement des processus se fait à l'aide de SSH. Sur Briarée, par exemple, nous générons cette paire de clés à l'ouverture d'un compte; vous ne devriez jamais avoir besoin de le faire et vous ne devriez pas les effacer. Sur Colosse, vous devez générer des clés SSH vous-mêmes. Vous ne devez sous aucun prétexte utiliser votre clé publique générée sur un serveur de Calcul Québec pour vous brancher à un autre serveur (par exemple, un serveur CVS ou SVN utilisant SSH comme méthode d'accès). Utilisez plutôt la clé publique de votre machine locale en suivant les instructions ci-dessous et en mettant la ligne

ForwardAgent yes
dans le fichier « $HOME/.ssh/config » sur le serveur de Calcul Québec.

Pour les machines locales utilisant OpenSSH

Nous expliquons ici comment utiliser une paire de clés privée et publique à l'aide du logiciel OpenSSH, un client SSH libre disponible sous Unix, Linux, Mac OS X et Cygwin. OpenSSH s'installe généralement sans problème si ce n'est déjà fait.

Les étapes à suivre sont les suivantes :

  • On produit une paire de clés sur la ligne de commande à l'aide de la commande « ssh-keygen ». Cette commande va demander de choisir un mot de passe servant à protéger l'accès à la clé privée. Il est obligatoire d'entrer un mot de passe pour sécuriser l'accès interactif aux serveurs distants. On obtient alors une clé privée portant le nom « $HOME/.ssh/identity », « $HOME/.ssh/id_dsa » ou « $HOME/.ssh/id_rsa ». La clé publique correspondante portera le même nom avec l'extension « .pub ».
  • On copie la clé publique sur le serveur distant. Si la clé privée s'appelle « $HOME/.ssh/id_dsa », on fait ceci, par exemple :
 
 [nomlocal@serverlocal $] scp $HOME/.ssh/id_dsa.pub nom@serveur:.ssh/nomlocal_serveurlocal.pub
 nom@serveur's password: 
 id_dsa.pub                                    100%  405     0.4KB/s   00:00
 [nomlocal@serverlocal $] 
 


  • On ajoute ce fichier à la fin du fichier « $HOME/.ssh/authorized_keys » du serveur distant :
 
 [nom@serveur $] mkdir -p $HOME/.ssh # Crée le répertoire en argument s'il n'existe pas
 [nom@serveur $] cd $HOME/.ssh
 [nom@serveur $] cat nomlocal_serveurlocal.pub >> authorized_keys
 


  • Sur la machine locale, on vérifie que le programme « ssh-agent » tourne sous l'utilisateur en question (en général, le système de fenêtrage va s'occuper de lancer « ssh-agent » pour vous) :
 
 [nomlocal@serverlocal $] ps -f -u $USER | grep ssh-agent
 nomlocal   7800  7761  0 09:20 ?        00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/tcsh -c "/usr/bin/dbus-launch --exit-with-session gnome-session"
 nomlocal  12538  8608  0 15:33 pts/5    00:00:00 grep ssh-agent
 [nomlocal@serverlocal $] 
 


  • On lance la commande « ssh-add » pour accéder à la clé privée. On entre le mot de passe de la clé lorsque le programme nous le demande :
 
 [nomlocal@serverlocal $] ssh-add 
 Enter passphrase for /home/nomlocal/.ssh/id_dsa: 
 Identity added: /home/nomlocal/.ssh/id_dsa (/home/nomlocal/.ssh/id_dsa)
 [nomlocal@serverlocal $] 
 


  • On établit des connexions SSH à volonté, sans avoir à entrer de mot de passe :
 
 [nomlocal@serveurlocal $] scp fichier.c nom@serveur:src
 [nomlocal@serveurlocal $] ssh nom@serveur
 


Pour les machines locales utilisant PuTTY

Nous expliquons ici comment utiliser une paire de clés privée et publique à l'aide du logiciel PuTTY, un client SSH sous Windows. Nous supposons d'abord que l'ordinateur Windows contient une installation complète de PuTTY faite à partir de l'installateur

Génération des clés

  • Démarrer le logiciel PuTTYgen, Menu Démarrer/Programmes/PuTTY/PuTTYgen.
  • Activer la case « SSH2 RSA », plus sécuritaire que « SSH2 DSA » (étape 1, dans la figure ci-dessous).
  • Cliquer sur le bouton « Generate » (étape 2).
  • Bouger la souris dans le programme pour générer les clés au hasard.
  • Entrer un commentaire, par exemple quelque chose qui identifie la machine, par exemple nomlocal@machinelocale (étape 3).
  • Entrer un mot de passe non vide. Ce mot de passe est associé à la clé et est totalement indépendant du mot de passe de votre compte sur le serveur distant (étape 4).
  • Cliquer sur « Save private key » et faire l'enregistrement au nom de id_rsa.ppk dans « C:\Documents and settings\nom_utilisateur\Mes documents\Putty » (ou, selon votre version de Windows, dans « C:\Users\nom_utilisateur\Documents\Putty ») (étape 5).
  • Faire un copier du texte dans l'encadré « Public key to paste into OpenSSH ... » (étape 6).
  • Coller le tout dans le Bloc-notes (Notepad).
  • Enregistrer le fichier en format ANSI dans le même dossier au nom de id_rsa_win.pub (pas d'extension .txt).
  • Fermer PuTTYgen et Bloc-note.
Puttygen rsa.png

Transfert de la clé publique sur le serveur

  • Démarrer l'application « PSFTP » dans le menu Démarrer/Programmes/PuTTY/PSFTP.
  • Dans la nouvelle fenêtre, entrer successivement:
    • la commande « open nomserveur », où « nomserveur » est le serveur où on veut installer la clé publique,
    • le nom d'utilisateur sur ce serveur,
    • le mot de passe correspondant sur ce serveur,
    • la commande « cd .ssh »,
    • la commande « lcd "C:\Documents and settings\nom_utilisateur\Mes documents\Putty" » (où « nom_utilisateur » est votre nom d'utilisateur sous Windows),
    • faites plutôt « lcd "C:\Users\nom_utilisateur\Documents\Putty" » si c'est le répertoire où vous avez mis vos clés,
    • et finalement la commande « put id_rsa_win.pub ».
  • Fermer l'application « PSFTP ».

Ajouter la clé publique dans la liste des clés publiques autorisées

  • Démarrer l'application « PuTTY » dans le menu Démarrer/Programmes/PuTTY/PuTTY. La fenêtre « PuTTY Configuration » apparaîtra à l'écran.
  • Dans la boîte « Host Name (or IP address) », entrer « utilisateur@nomserveur ».
  • Cliquer sur le bouton « Open ».
  • Dans la nouvelle fenêtre qui s'affichera, entrer le mot de passe sur ce serveur.
  • Entrer les commandes suivantes :
 
 [nom@serveur $] cd .ssh
 [nom@serveur $] echo >> id_rsa_win.pub
 [nom@serveur $] cat id_rsa_win.pub >> authorized_keys
 


Lancement de PuTTY Agent

PuTTY Agent est le programme qui gère l'accès aux clés privées avec PuTTY. Il existe différentes façons de le lancer :

  • Manuellement : double-cliquer sur le fichier id_rsa.ppk et ceci lancera automatiquement PuTTy Agent avec votre clé.
  • Pour lancer l'agent automatiquement à l'ouverture de session : créer un raccourci du fichier id_rsa.ppk dans le Menu Démarrer/Programmes/Démarrage.

Dans les deux cas, une fenêtre s'ouvrira et demandera de fournir le mot de passe pour accéder à votre clé privée.

Si l'agent n'est pas ouvert avec la clé, aucune connexion SSH sans mot de passe ne peut fonctionner.

Test de la connexion

Démarrez l'application « PuTTY » comme ci-dessus et tentez une connexion sur la même machine. Vous devriez obtenir la connexion sans avoir à entrer le mot de passe du serveur.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager