Gérer ses clés SSH pour plusieurs serveurs
- Unix
Quand on travaille avec plusieurs serveurs qui requièrent une authentification par des clés SSH, il peut être fatigant de devoir préciser quelle clé on désire utiliser pour se connecter. Alors certes on augmente le degré de sécurité du serveur, mais on complique aussi un peu la connection au serveur.
Voici dont quelques explications qui vont vous permettre de mieux gérer vos clés de connection...
Dans cet article, nous allons imaginer que l'on travaille avec deux serveurs qui utilisent des clés SSH pour l'authentification. Un serveur que j'appellerai github et un second serveur que je nommerai amazon, chaque serveur dispose de sa clé qui est déjà généré.
Comment se connecter en SSH
Pour se connecter en SSH à un serveur, si on fait les choses bien on saisi une commande du type :
$> ssh user@serveur:port
C'est une commande qui n'est pas très longue à taper et qui est à facile de retenir. Mais si l'on doit se connecter à un serveur avec une clé SSH, on doit ajouter un paramètre à la commande précédente et on doit se souvenir du nom de la clé que l'on désire utiliser :
$> ssh -i /chemin/vers/ma/cle/publique/github user@github.com:port
Saisir cette commande va prendre plus de temps et n'est pas forcément facile à se souvenir. Heureusement, il existe des solutions pour régler ce problème qui n'en est pas vraiment un mais qui est pour les fainéants...
Utilisation des alias
Oui, c'est la solution la plus simple et qui convient la majorité du temps à condition que vous vous connectiez toujours avec le même utilisateur à votre serveur. La technique consiste à éditer votre fichier .bashrc si vous utilisez un shell bash et d'ajouter des alias pour vos serveurs :
alias ssha='ssh -i /chemin/vers/ma/cle/publique/amazon user@amazon.com:port'
alias sshg='ssh -i /chemin/vers/ma/cle/publique/github user@github.com:port'
Dorénavant, pour se connecter il suffira de saisir l'alias sshg et vous serez automatiquement connecté au serveur GitHub. N'hésitez pas à créer autant d'alias que vous voulez, cela vous fera gagner du temps...
Utilisation du fichier de config SSH
Si jamais vous préférez ne pas modifier votre fichier .bashrc pour diverses raisons, il existe une autre solution pour conifgurer vos clés. SSH dispose d'un fichier de configuration dans le répertoire ~/.ssh nommé config (quelle originalité). J'ai regardé mes différentes machines et je n'ai trouvé aucune trace de ce fichier. Pas de problème, on va créer le fichier nous même :
$> vi ~/.ssh/config
Il faut maintenant ajouter la configuration de vos clés en fonction des serveurs auxquels vous allez vous connecter. Imaginons que l'on veuille configurer à deux serveurs, celui de github et un autre serveur amazon par exemple.
Host amazon.com
IdentityFile /chemin/vers/ma/cle/publique/amazon
Host github.com
IdentityFile /chemin/vers/ma/cle/publique/github
Maintenant, vous pouvez vous connecter avec n'importe quel utilisateur sur votre serveur, la bonne clé sera appliquée lorsque l'on tentera de ce connecter au serveur. Et on peut maintenant se connecter au serveur amazon en réutilisant la première commande de l'article :
$> ssh user@amazon.com
C'est on ne peut plus simple, pratique et cela fera gagner du temps puisque la gestion des clés devient maintenant totalement invisible...
Il faudra juste se souvenir de l'existence de ce petit fichier en cas de problème...
Il existe d'autres petites configuration que l'on peut faire avec ce fichier, je vous conseille de parcourir cette page man si vous désirez peaufiner la configuration de votre client SSH...
Merci à Stéphane pour la petite relecture orthographique...