J’ai une machine (A), avec un compte "benjamin" à partir de laquelle je souhaite me connecter en root sur une autre machine (B) sans demande de mot de passe.
Sur la machine A (en utilisateur benjamin) :
ssh-keygen -t rsa, puis 3 fois Entrée Cette commande me génère une clé publique et une clé privée (dans l’ordre, id_rsa.pub et id_rsa) dans le dossier /home/benjamin/.ssh
Ensuite, il faut copier la clé publique (id_rsa.pub) dans un fichier authorized_keys dans le dossier /root/.ssh de la machine B.
Sur la machine B :
sudo mkdir /root/.ssh Créé le dossier /root/.ssh
Sur la machine A :
scp /home/benjamin/.ssh/id_rsa.pub 192.168.1.4:/root/.ssh/authorized_keys En supposant que l’adresse IP de la machine B soit 192.168.1.4.
Il faut, uniquement cette fois, taper le mot de passe root de la machine B. Cette commande copie le fichier /home/benjamin/.ssh/id_rsa.pub dans le fichier /root/.ssh/authorized_keys de la machine B (même si ce fichier n’existe pas).
Toujours sur la machine A (en utilisateur benjamin) :
ssh [email protected] (puis confirmer avec yes) Plus aucun mot de passe ne sera demandé.
-
Le fichier /home/benjamin/.ssh/known_hosts contient les ‘identifiants’ du pc sur lequel on a voulu se connecter. *
Résumé :
- Je génère une clé publique ssh avec le compte benjamin sur la machine A,
- je la copie sur la machine B dans le fichier /root/.ssh/authorized_keys (si je veux avoir accès au compte root sans mot de passe),
- à partir de la machine A (avec le compte benjamin) je me connecte en ssh sur la machine B ( ssh [email protected] _ip_machineB )
-
il se créé donc un fichier /home/benjamin/.ssh/known_hosts contenant l’identité de la machine B.
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="" devant la clé dans le fichier authorized_keys .
Ce dernier ressemblera donc à ceci :
from="192.168.1.2" ssh-rsa AB3NzaC1yc2EAzYABIwAb[…]
Note 2 : Une fois que nos clés publiques/privées ont été générées sur la machine A (étape 1), il est possible "d’automatiser" tout le reste avec une seule commande : ssh-copy-id
Très simplement, sur la machine A, vous n’avez qu’à taper :
ssh-copy-id [email protected] (pour reprendre notre exemple). Cette commande se chargera de créer le répertoire .ssh et de remplir le fichier authorized_keys automatiquement sur la machine distante.
Pour les connexions SSH sur un port autre que le port 22, il faut lancer la commande ssh-copy-id "-p 2224 [email protected] "
Utilisez cette procédure avec prudence, en particulier avec les comptes root.
Laisser un accès libre à une machine en root est un manque de sécurité évident, malgré toutes les précautions préalables.