Ssh sans de mot de passe

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"

Derniers Articles