Depuis un certain temps j'utilise la connexion par clé privée avec ssh. Cependant dans ma configuration il fallait que j'utilise une clé privée différente par serveur.
Le but de ce tutoriel est de permettre l'utilisation de clés ssh multiples : une clé ssh avec passphrase et une clé ssh sans passphrase pour chacun des serveurs.
Après quelques recherches j'ai finalement trouvé comment faire pour configurer ssh afin de réaliser ces différents types de connexion.
Génération de la clé ssh avec passphrase
Je lance la commande pour générer une clé ssh et je saisie une passphrase lorsque l'on me le demande :
pcr@home:~$ ssh-keygen -t dsa -b 1024 -f ~/.ssh/key-with-passphrase
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pcr/.ssh/key-with-passphrase.
Your public key has been saved in /home/pcr/.ssh/key-with-passphrase.pub.
Génération de la clé ssh sans passphrase
Même chose que précédemment en ajoutant une passphrase vide :
pcr@home:~$ ssh-keygen -t dsa -b 1024 -f ~/.ssh/key-without-passphrase -N ""
Generating public/private dsa key pair.
Your identification has been saved in /home/pcr/.ssh/key-without-passphrase.
Your public key has been saved in /home/pcr/.ssh/key-without-passphrase.pub.
Copie des clés publiques sur les serveurs
Je copie la clé publique avec passphrase sur le serveur où l'authentification doit se faire avec passphrase avec la commande suivante :
pcr@home:~$ ssh-copy-id -i ~/.ssh/key-with-passphrase.pub pcr@server-with-passphrase.com
Ensuite je fais la même chose avec le serveur qui doit permettre l'authentification sans passphrase :
pcr@home:~$ ssh-copy-id -i ~/.ssh/key-without-passphrase.pub pcr@server-without-passphrase.com
Configuration du client ssh
Pour indiquer au client ssh la clé qu'il doit utiliser pour chacun des serveurs je crée le fichier ~/.ssh/config dans lequel je spécifie pour chacun des serveurs la clé qu'il doit utiliser :
pcr@home:~$ cat ~/.ssh/config
Host server-without-passphrase.com
User pcr
IdentityFile ~/.ssh/key-without-passphrase
Host server-with-passphrase.com
User pcr
IdentityFile ~/.ssh/key-with-passphrase
L'instruction User pcr est inutile dans mon cas, mais elle permet de forcer le client ssh à se connecter au serveur en utilisant l'utilisateur pcr.
Image : mollydot