Sur une machine (1), avec un compte « starmate » à partir de laquelle je souhaite me connecter en root sur une autre machine (2) sans que l’on me demande de mot de passe.
Sur la machine 1 (en utilisateur starmate)
Je génère d’abord une clé publique ssh avec le compte starmate sur la machine 1:
ssh-keygen -t rsa
Cette commande va générer une clé publique et une clé privée (dans l’ordre, id_rsa.pub et id_rsa) dans le dossier personnel de starmate (/home/starmate/.ssh).
Maintenant, il faut recopier la clé publique (id_rsa.pub) que l’on vient de générer dans le dossier /root/.ssh/authorized_keys de la machine 2.
Sur la machine 2 on créer le dossier /root/.ssh:
mkdir /root/.ssh
On revient sur la machine 1 :
je vais maintenant copier sur la machine 2 dans le fichier /root/.ssh/authorized_keys (si je veux avoir accès au compte root sans mot de passe), en supposant que l’adresse IP de la machine 2 soit 192.168.0.14.
scp /home/starmate/.ssh/id_rsa.pub 192.168.0.14:/root/.ssh/authorized_keys
Il faut, uniquement cette fois, taper le mot de passe root de la machine 2.
Cette commande va copier le fichier /home/starmate/.ssh/id_rsa.pub dans le fichier /root/.ssh/authorized_keys de la machine 2 (même si ce fichier n’existe pas).
Toujours sur la machine 1 (en utilisateur starmate) :
ssh root@192.168.0.14
Plus aucun mot de passe ne sera demandé
il se créé donc un fichier /home/starmate/.ssh/known_hosts contenant l’identité de la machine B. Le fichier /home/starmate/.ssh/known_hosts contient les ‘identifiants’ du pc sur lequel on a voulu se connecter.
Note : Pour améliorer la sécurité de ces connexions par clé RSA, nous pouvons restreindre l’utilisation de la clé d’authentification à l’adresse IP de la machine A en ajoutant from= »1920.168.0.5″ devant la clé dans le fichier authorized_keys.
Ce dernier ressemblera donc à ceci :
from="192.168.0.5" ssh-rsa AB3NzaC1yc2EAzYABIwAb[...]
Il est également possible d’automatiser toute cette procédure avec la commande ssh-copy-id.
Tout simplement, sur la machine 1:
ssh-copy-id root@machine2
.
Cette commande va créer le répertoire .ssh et remplir le fichier authorized_keys automatiquement sur la machine distante.
Si le service SSH ecoute sur un port autre que le port 22, il faudra lancer la commande:
ssh-copy-id "-p 2224 root@192.168.1.4"