authentification par cle avec SSH

Création de la paire de clé :

La création de la paire de clé se fait avec ssh-keygen. Il existe deux sortes de clés : RSA et DSA.

Pour créer une clé DSA de 1024 bits par exemple:
[fanf@bizimaster ~]$ ssh-keygen -t dsa -b 1024 -C fanf.org	(a noter -C est le commentaire)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/fanf/.ssh/id_dsa): 	(Le chemin par defaut)
Created directory '/home/fanf/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fanf/.ssh/id_dsa.	(La clé privée à renommer)
Your public key has been saved in /home/fanf/.ssh/id_dsa.pub.	(La clé publique à distribuer)
The key fingerprint is:
9d:xx:c1:xx:3f:xx:92:xx:18:xx:d6:xx:7f:xx:dd:xx fanf.org	(L'empreinte digitale de ma clé)

Deux fichiers ont été créés dans le dossier ~/.ssh/ :

  • id_dsa : Il contient la clé privée pour prouver son identité aux serveurs. Celle ci ne doit jamais être dévoilée.
  • id_dsa.pub : Il contient la clé publique, celle ci sera exportée sur châque hôte sur lequel on désire se connecter..

Ou placer ces fichier, avec quelles permissions :

La clé privée restera dans le répertoire .ssh avec son nom d'origine.

Le contenu de la clé publique devra être exporté sur la machine cible, celle ci doit être de forme uniligne. Le fichier distant doit se nommer : /$HOME/.ssh/authorized_keys Si plusieures clés publiques sont déclarées, on les copiera dans ce fichier authorized_keys les unes à la suite des autres (1 par ligne).

SSH va vérifier les permissions sur les répertoires et fichiers en question et refusera le mécanisme d'authentifications si ces droits ne lui conviennent pas.

On trouvera souvent dans les forums une recette de grand mère qui consiste à appliquer les permissions suivantes :

  • le repertoire .ssh doit avoir ses droits à 700
  • Le fichier authorized_keys qui contient la clé doit etre à 600

Ceci fonctionnera très bien évidement et assurera la meilleure sécurité possible mais SSH n'est pas aussi pointilleux.

Il lui suffira que :

  1. Le repertoire $HOME ne soit +w que pour son possesseur.
  2. Le repertoire $HOME/.ssh ne soit +w que pour le possesseur du $HOME
  3. Le fichier $HOME/.ssh/authorized_keys ne soit +w que pour le pocesseur du repertoire auquel il appartient.

Transférer sa clé publique vers la machine cible.

Il existe plusieures manières d'effectuer ce transfert :

Transfert manuel avec un support tiers, clé usb, CDrom, etc ...

... Que dire de plus. A si, j'ai oublié de mentionner la disquette.

Transfert le plus classique
cat ~/.ssh/id_dsa.pub | ssh machine_distante "cat - >> ~/.ssh/authorized_keys"
Transfert avec un outil dédié :
ssh-copy-id -i ~/.ssh/id_dsa machine_distante