SSH a remplacé le désormais obsolète telnet pour les communications entre machines.
Non seulement il permet une meilleure sécurité (les échanges de données sont cryptés) mais il offre la possibilité de s’affranchir de la saisie de mot de passe.
Cette note va vous exposer la marche à suivre pour pouvoir vous connecter via SSH sur une machine distante sans saisir de mot de passe.
Cette fonctionnalité repose sur le principe des clefs publiques et privées (que je n’exposerai pas ici).
Supposons que la machine A est la machine source, c’est à dire la machine à partir de laquelle vous voulez vous connecter sur la machine B (la machine destination).
Pour notre exemple la machine A est “alamaison” et la machine B “www.leserveur.com”.
Sur la machine source (A)
Commencez par générer vos clefs (privée et publique) au moyen de l’utilitaire ssh-keygen :
(sukria@alamaison:sukria)$ ssh-keygen -t rsa -b 1024 [...] Your public key has been saved in /home/sukria/.ssh/id_rsa.pub [...]
N’entrez pas de passphrase lorsque l’utilitaire vous le demande.
Votre clef publique est contenue à présent dans le fichier ~/.ssh/id_rsa.pub.
Il vous faut maintenant télécharger cette clef sur le serveur destination (Machine B).
Un scp fera l’affaire (entrez yes à la question que pose votre client ssh, ainsi le host B sera connu pour la machine A)
scp .ssh/id_rsa.pub www.leserveur.com:
Très bien, à présent, tout se joue du côté de la machine B…
Sur la machine destination (B)
La clef publique de la machine A doit être ici sous le nom id_rsa.pub” grâce au scp précédemment effectué.
Le principe de SSH est de contenir un fichier qui liste toutes les clefs publiques des machines qui ont le droit de se connecter sans mot de passe ; ce fichier se nomme authorized_keys et doit être dans ~/.ssh
Attention, il est impératif que l’utilisateur soit identique sur la machine A et la machine B (ici “sukria”) et que les droits sur tous les fichiers de ~/.ssh/ soient en chmod 600.
Nous allons donc intégrer id_rsa.pub dans notre liste de clefs publiques autorisées : .ssh/authorized_keys puisqu’il s’agit de la clef publique de A :
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Voila, maintenant toute tentative de connexion partant de la machine A vers la machine B sera automatiquement acceptée pour l’utilisateur en question.