Outils du site

L'astronome peut vous parler de son entendement de l'espace. Il ne peut vous donner son entendement. Le musicien peut vous interpréter le rythme qui régit tout espace. Il ne peut vous donner l'ouïe qui capte le rythme, ni la voix qui lui fait écho. Celui qui est versé dans la science des nombres peut décrire les régions du poids et de la mesure. Il ne peut vous y emmener. Car la vision d'un être ne prète pas ses ailes à d'autres, De même que chacun de vous se tient seul dans la connaissance de Dieu, chacun de vous doit demeurer seul dans sa connaissance de Dieu et dans son entendement de la terre. [Khalil GIBRAN]

04-linux:30-ssh:10-authentification_par_cle

Authentification

Voir man ssh

Principe

Pour éviter de se logger en entrant un mot de passe sur la machine distante il faut mettre en place une authentification par clé :

  • que l'utilisateur se génère un couple (public, privé) de clés d'authentification
    • Sur la machine locale
    • Sur la machine distante
  • que la machine distante connaisse la clé publique de l'utilisateur de la machine locale

Le mécanisme d'authentification s'assure lors de la connexion que la clé privée de l’utilisateur correspond à la clé publique connue du serveur distant.

Mise en oeuvre

La commande ssh-keygen génère une couple de clés privée et publique pour l'authentification d'un compte utilisateur.

Pour générer les clés d'un utilisateur :

ssh-keygen -C «user»-«Machine»-«date» (Clé RSA) –> Répondre “return” aux questions (valeurs par défaut)

La paramètre -C permet de fixer un commentaire associé à la clé. «user»-«Machine»-«date» est un choix personnel.
La clé privé ne doit jamais être diffusée à qui que ce soit.

Ces clés sont stockées dans le dossier ~/.ssh

roge@raspi ~ $ ll .ssh
total 8
-rw-r--r-- 1 roge roge    0 Aug  6 00:27 authorized_keys   --> Liste des clé publiques authorisées pour ce compte
-rw------- 1 roge roge 1679 Aug  6 00:26 id_rsa            --> clé privée
-rw-r--r-- 1 roge roge  388 Aug  6 00:26 id_rsa.pub        --> clé publique (à diffuser)

Pour utiliser l'authentification par clé sur une machine distante il faut copier sa clé publique sur la machine distante à la fin du fichier .ssh/authorized_keys :

cat ~/.ssh/id_rsa.pub | ssh -p port <user>@<host> "cat - >> .ssh/authorized_keys"

puls efficace :

ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<host>

le fichier authorized_keys doit avoir des permissions -rw------- sinon il n'est pas pris en compte et le mot de passe est demandé.

chmod 600 ~/.ssh/authorized_keys

chmod 600 authorized_keys

L'authentification par clé est nécessaire pour tous les scripts batch qui font du ssh.
En cas de message “Permissions 0644 for '/home/xxx/.ssh/id_rsa' are too open.” -rw——-

chmod 600 ~/.ssh/id_rsa

Pour les machines Windows, voir PuTTY : Accès à une machine Linux depuis Windows avec PuTTY.

Tips & tricks

Quand on à la message:

Warning: the ECDSA host key for '<host>' differs from the key for the IP address '192.168.x.y'
Offending key for IP in /home/<user>/.ssh/known_hosts:3

Alors il faut supprimer les 3ieme ligne de known_hosts:

sed -i '3d' ~/.ssh/known_hosts

Dernière modification : 2022/12/08 17:51