Page mise à jour le 30 avril 2024
Cet article fait partie d’une série d’articles sur SSH.
Pourquoi utiliser une clé SSH ?
Si vous vous connectez souvent à une machine en ssh, vous utilisez probablement cette ligne de commande depuis votre machine locale :
# en local $ ssh mon_login@machine-distante.com
Oui mais voila :
- Entrer son mot de passe à chaque fois, c’est chiant (surtout qu’il est long, pour une bonne raison de sécurité) ;
- Vous n’avez pas envie que quelqu’un qui a observé votre mot de passe puisse se connecter à votre place (sans parler des keyloggers) ;
- Si vous disposez d’un agent ssh (j’en parle plus loin) qui mémorise votre mot de passe de clé SSH : vous pouvez vous connecter à la machine distante en un éclair (au chocolat) sans entrer un seul mot de passe, mais avec une sécurité maximale.
Principe de la connexion avec clés SSH
Pour se connecter à une machine distante sans utiliser le mot de passe de la session distante, il suffit d’ajouter votre clé SSH publique (que vous possédez en local) dans le fichier ~/.ssh/authorized_keys de la machine distante.
Ainsi, lors de la tentative de connexion (à la machine distante depuis la machine locale) , plutôt que de demander le mot de passe (du login sur la machine distante), SSH va vérifier si vous possédez bien (en local) la clé privée qui est appairée à la clé publique enregistrée dans la liste de clés du fichier ~/.ssh/authorized_keys (situé dans le dossier .ssh à la racine du home de l’utilisateur de la machine distante à laquelle vous vous connectez)
Copier élégamment sa clé publique SSH sur une machine distante
Pour ajouter sa clé SSH publique dans le fichier ~/.ssh/authorized_keys, situé dans le dossier .ssh (à la racine du home) de l’utilisateur de la machine distante à laquelle vous vous connectez), il suffit d’executer en local cette commande :
# en local $ ssh-copy-id login-distant@machine-distante.com
Bien entendu, SSH vous demande le mot de passe (du login « login-distant » de la « machine-distante »), puis il ajoute votre clé publique (stockée en local) au fichier /home/login-distant/.ssh/authorized_keys.
Voila, fini, vous pouvez à présent vous connecter sans le mot de passe, seul celui de déverrouillage de votre clé privée vous sera demandé (s’il n’est pas mémorisé par ssh-agent ou autre). Magique non ?
S’il vous vient à l’idée de jeter un oeil au contenu du fichier /home/login-distant/.ssh/authorized_keys, vous y trouverez (au moins) votre clé publique (séparée des autres par des retours à la ligne). C’est là que le commentaire utilisé pour générer sa paire clé prend tout son sens !
# sur la machine distante $ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1[bla bla bla]ZGjoL/5t4zqLLOmB5EpBg2ydBQ== valerian@reithinger.fr
Copier manuellement sa clé publique SSH sur une machine distante
Si vous avez compris la section précédente, vous vous doutez que vous pouvez ajouter votre clé SSH publique manuellement au fichier /home/login-distant/.ssh/authorized_keys de la machine distante.
Vous pouvez également décider d’ajouter la clé publique d’un utilisateur tiers (qui vous aura communiqué sa clé SSH publique) à votre machine.
# sur la machine distante $ cat la-cle-publique.pub >> .ssh/authorized_keys