Connexion SSH sans mot de passe

Connexion SSH sans mot de passe

2 mars 2020
Sésame, ouvre-toi !


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'utilisateur
  • host (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 :

  1. Uploader la clé sur la machine distante
  2. Créer les dossiers et fichier ~/.ssh et ~/.ssh/authorized_keys
  3. 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 à autoriser
  • user (utilisateur) nom d'utilisateur
  • host (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)

Sources