Outils du site

Que la vie serait belle si tout le monde doutait de tout, si personne n'était sûr de rien. On pourrait supprimer du dictionnaire les trois quarts des mots en \"iste\", fasciste et communiste, monarchiste et gauchiste, khomeyniste et papiste. [Pierre Desproges]

04-linux:30-ssh:10-authentification_par_cle

Ceci est une ancienne révision du document !


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”

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.”

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 '<computer>' 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 : 2018/04/16 10:26