Il est courant, voir même conseillé de configurer l’accès SSH d’un serveur avec une authentification par clé publique. Lorsque l’on gère plusieurs serveurs, côté client, on se retrouve rapidement avec de nombreuses clé privées sur les bras (à moins d’utiliser toujours la même, mais ce n’est pas très « secure »). Voyons comment configurer la partie client pour gagner un peu de temps.
La configuration du client SSH d’un utilisateur est décrite dans le fichier situé dans le répertoire de l’utilisateur et plus exactement dans le répertoire caché « .ssh ».
nano ~/.ssh/config
Voici un exemple de configuration :
# user1@server1 Host server1 HostName server1.exemple.com User user1 IdentityFile ~/.ssh/server1.user1.id_rsa # user1@server2 Host server2 HostName server2.exemple.com User user1 IdentityFile ~/.ssh/server2.user1.id_rsa # user2@server3 Host server3 HostName server3.exemple.com User user2 IdentityFile ~/.ssh/server3.user2.id_rsa
J’ai choisi de préfixer le nom des clés privées par le nom du serveur suivi du nom de l’utilisateur afin de m’y retrouver facilement. Appliquez un chmod 600 sur les clés privées. Il est ensuite bien plus simple de se connecter en SSH aux différents serveurs :
// Avant la configuration du client SSH : ssh -i ~/.ssh/server1.user1.id_rsa user1@server1.exemple.com // Après la configuration : ssh server1
Note du 22/10/2010 :
Avec trop de clés privées, il y a un risque d’avoir un échec d’authentification (problème constaté pour ma part). L’ensemble des clés chargées par l’agent sont testées lors de l’authentification. Pour éviter cela, il suffit d’ajouter cela à votre fichier de config :
Host * IdentitiesOnly yes
En by-passant l’agent, le mot de passe vous sera redemandé à chaque fois.