Introduction
C'est vraiment pratique de se connecter à une machine distante via une connexion SSH. Une simple commande nous permet d'avoir accès à un shell
de notre serveur ou notre Raspberry Pi par exemple. Cependant quand on multiplie les machines et / ou les commandes, il devient rapidement fastidieux de taper le mot de passe à chaque fois.
Nous allons voir comment avec la commande ssh-copy-id
il est possible d'autoriser de manière permanente notre machine ou plus précisément notre clé SSH.
Nous pourrons ensuite nous connecter en SSH à une machine distante, en toute sécurité mais sans demande de mot de passe.
Génération clés publique et privée SSH
Je pars du principe que vous utilisez dejà les connexions SSH et donc que vous avez déjà un jeu de clé publique / privé. Si cela n'est pas le cas, vous pouvez en générer un grâce à la commande :
ssh-keygen -t rsa -b 4096 -C "me@email.com"
-t
(type) l'algorithme de chiffrement à utiliser-b
(bits) la taille de la clé-C
(comment) commentaire indiquant le propriétaire de la clé
Autorisation permanent d'une clé sur la machine distante
La commande est très similaire à une connexion SSH classique sauf que vous allez utiliser la commande ssh-copy-id
au lieu de ssh
:
ssh-copy-id user@host
user
(utilisateur) nom d'utilisateurhost
(hôte) adresse IP ou nom de la machine distante
Le mot de passe de la machine distante vous sera donc demandé une dernière fois. Ensuite le script se chargera tout seul de :
- Uploader la clé sur la machine distante
- Créer les dossiers et fichier
~/.ssh
et~/.ssh/authorized_keys
- Modifier le fichier
~/.ssh/authorized_keys
Vous pouvez à présent vous connecter en SSH sans mot de passe !
Spécifier la clé à autoriser.
Si vous utiliser plusieurs clés SSH sur votre ordinateur, il peut être important de spécifier la clé à autoriser au cas par cas. Dans ce cas on utilise l'option -i
.
ssh-copy-id -i ~/.ssh/my_specific_key_rsa.pub user@host
-i
(identity file) clé publique à autoriseruser
(utilisateur) nom d'utilisateurhost
(hôte) adresse IP ou nom de la machine distante
En savoir plus
Les anciennes version de ssh-copy-id
utilise par défaut uniquement la clé ~/.ssh/id_rsa
. Les versions récentes vont autoriser toutes les clés SSH présentes sur votre ordinateur.
La commande ssh-copy-id
est un script shell et non un programme binaire. Il est donc très facile d'en étudier le comportement. Vous pouvez afficher le code source du script avec la commande suivante :
cat $(which ssh-copy-id)