Se connecter en ssh sans demande de mot de passe

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.