Connexion SSH sans mot de passe

Le but est de pouvoir faire dialoguer 2 serveurs par SSH sans avoir besoin de fournir de mot de passe dans des scripts (en clair). L’utilité se fait sentir quand on a besoin de faire des transfert Rsync par exemple.

Le principe est d’utiliser des clefs d’authentification entre les 2 serveurs. La clef privée sur le serveur local (Serv1) et la clef publique sur le serveur distant (Serv2) qui prendra la main sur le premier.

On se connecte sur le serveur (Serv1) où l’on voudra se connecter en SSH, et on génère les clefs SSH.

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”ssh-keygen%20-t%20dsa%20-b%201024″/]

Pour chaque question, il faut répondre par la touche Entrée jusqu’à la génération de 2 fichiers :

id_dsa : c’est la clef privée qui doit rester sur le serveur à ne jamais transmettre.
id_dsa.pub : c’est la clef publique qui sera transmise à la machine qui veut se connecter (Serv2).

Si la machine n’a jamais reçue de clé publique on prépare le terrain. On se connecte en SSH à la machine distante (Serv2) et on créé le répertoire nécessaire :

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”ssh%20root%40Serv2%0A%23Donner%20le%20mot%20de%20passe%0Amkdir%20~%2F.ssh%0Achmod%20700%20~%2F.ssh%0A%23Pour%20retourner%20sur%20le%20serveur%20(Serv1)%0Aexit”/]

Puis on transfert la clé publique (du Serv1) sur le serveur (Serv2) :

[pastacode lang=”bash” manual=”ssh%20root%40192.168.0.Serv1%20%22echo%20%24(cat%20~%2F.ssh%2Fid_dsa.pub)%20%3E%3E%20.ssh%2Fauthorized_keys%22%0Assh%20root%40192.168.0.Serv1%20%22chmod%20600%20~%2F.ssh%2Fauthorized_keys%22″ message=”” highlight=”” provider=”manual”/]

Maintenant, on peut se connecter automatiquement en SSH depuis le serveur distant (Serv2) :

[pastacode lang=”bash” manual=”ssh%20root%40192.168.0.Serv1″ message=”” highlight=”” provider=”manual”/]