Automatiser les échanges par ssh et scp en utilisant des clés d’authentification

On veut que le serveur jupiter se connecte sur le serveur neptune. L’opération va être réalisée en deux phases :

  • on crée les clés d’identification sur le serveur jupiter
  • on recopie la clé publique de jupiter sur neptune, pour que ce dernier accepte toute tentative de connexion.

Dans ce document, Jupiter et Neptune peuvent être remplacés par un nom dns ou une adresse IP.

Créer les clés d’identification sur Jupiter

créer le dossier /root/.ssh

md /root/.ssh

dans ce dossier, créer la paire de clés (privée – publique) qui sera utilisée pour les échanges :

cd /root/.ssh
ssh-keygen -t dsa

conserver tous les choix par défaut (nom du fichier et pas de passphrase). Le programme génère deux fichiers : id_dsa, la clé privée, et id_dsa.pub, la clé publique.

Recopier la clé publique sur le Neptune

A partir de Jupiter, copier la clé publique sur Neptune :

scp /root/.ssh/id_dsa.pub root@neptune:/root

indiquer le mot de passe de root de Neptune : le fichier est recopié.

Sur Neptune, créer le dossier /root/.ssh :

md /root/.ssh

Intégrer la clé publique dans le fichier des autorisations :

cat /root/id_dsa.pub >> /root/.ssh/authorized_keys

on a ainsi recopié la clé publique dans le fichier de gestion des autorisations ssh. On peut maintenant, sur Neptune (mais pas sur le Jupiter), supprimer le fichier /root/id_dsa.pub, dont on n’a plus besoin :

rm /root/id_dsa.pub

Tests

Depuis Jupiter :

ssh -l root Neptune

Le programme ne demande plus de mot de passe.