Si vous vous connectez régulièrement à une machine ou un serveur en ssh, peut-être voudriez-vous éviter d’avoir à chaque fois à entrer le login et password nécessaire.
Il y a une solution pour cela : créer une clé privée et une clé publique, toutes deux cryptées ajouter votre clé publique à la liste des clés autorisées du serveur distant afin de permettre l’authentification automatique sur ce dernier.
Pour commencer : générons les clés
Dans votre Terminal, sur la machine utilisée pour se connecter, commencez par générer les clés :
ssh-keygen -t rsa -b 2048 Generating public/private dsa key pair.
Deux questions vous seront ensuite posées :
Enter file in which to save the key (/users/yvangodard/.ssh/id_rsa):
Par défaut, les clés seront enregistrées dans ‘.shh’ du répertoire de départ de l’utilisateur (ici sur Mac : /users/yvangodard/.ssh/). Si vous le souhaitez vous pouvez évidemment enregistrer vos clés ailleurs. Le tout étant de s’en rappeler ensuite !
Deuxième question :
Enter passphrase (empty for no passphrase):
Vous pouvez ne pas renseigner de passphrase si vous n’avez pas envie de devoir la rentrer à chaque connexion. Nous reviendrons plus bas sur les questions de sécurité liées à cela.
Deux fichiers ont maintenant été créés (dans le dossier ‘~/.ssh/’) :
- ‘id_rsa’ (ou ‘id_dsa’ dans le cas d’une clé DSA) : contient la clé privée et ne doit pas être dévoilé ou mis à disposition
- ‘id_rsa.pub’ (ou ‘id_dsa.pub’ dans le cas d’une clé DSA) : contient la clé publique, c’est elle qui sera mise sur le serveur dont l’accès est voulu.
Il faut ensuite déposer la clé publique sur le serveur distant que vous souhaitez joindre en ssh :
- Depuis un Mac (ssh-copy-id n’est pas disponible sur OS X)
cat ~/.ssh/id_rsa.pub | ssh utilisateurdistant@serveur.distant.fr "cat >> ~/.ssh/authorized_keys"
- Sous Linux :
ssh-copy-id -i ~/.ssh/id_dsa.pub utilisateurdistant@serveur.distant.fr
Que ce soit sous Mac ou Linux, il vous sera demandé le mot de passe de l’utilisateur distant pour autoriser à déposer dans son répertoire ~/.ssh votre clé publique. C’est normalement la dernière fois que l’on vous demandera votre mot de passe. Et faire ensuite un test de connexion.
ssh utilisateurdistant@serveur.distant.fr
Si vous avez choisi une ‘passphrase’ il vous faudra la rentrer. Une fois connecté sur la machine distante, par sécurité, faites un petit
chmod 600 ~/.ssh/authorized_keys
L’intérêt de définir une ‘passphrase’ ?
Si vous vous connectez à l’intérieur d’un réseau local, sans passer par l’internet, vous pouvez vous en passer. Mais sinon, autant paramétrer un une passphrase. Car, si quelqu’un récupère sur la machine qui va servir à se connecter la clé d’une manière ou d’une autre (faille dans un logiciel), il peut alors se connecter à toutes les machines où la clef a été déposée.
Si vous ne voulez pas retapez votre ‘passphrase’ à chaque connection, le mieux, au lieu de ne pas en utiliser est d’utiliser le cache ssh-agent.
Sur Mac, vous pouvez ajouter la clé privée à votre Trousseau, comme cela pas besoin de systématiquement retaper votre phrase magique :
ssh-agent ssh-add -K
Et si un jour vous avez besoin de modifier votre ‘passphrase’ :
ssh-keygen -p
Quelques lectures complémentaires :