Faire du Rsync ou SSH sans demande de mot de passe

L’automatisation des tâches est un élément important et les ordinateurs sont fait aussi pour cela, faire à notre place le travail répétitif.

Cependant la sécurité et les demandes de mots de passe peuvent frainer la mise en place de processus automatisés.

Nous allons expliquer ici comment utiliser des clefs privées publiques pour authentifier deux ordinateurs entre eux.

Imaginons que vous souhaitiez réaliser une synchronisation entre deux Ordinateurs reliés entre eux (par internet ou en intranet) host_src et host_dest.
host_src est l’ordinateur sur lequel vous souhaitez faire exécuter la commande scp, ssh ou rsyn, et ce quel que soit le sens de la copie de fichiers!

  1. Sur l’ordinateur host_src, exécuter la commande[code type= »shelle »]ssh-keygen -t rsa[/code]

    en étant connecté sous le compte utilisateur qui sera utiliser pour exécuter la commande scp/ssh/rsync.
    Vous serez alors invité à saisir un nom pour le fichier (vous pouvez ne rien saisir) puis validez.
    Vous serez en suite invité à saisir une « passphrase » (vous pouvez ne rien saisir) puis validez.
    Une paire clef publique, clef privée sera alors générée.
    Ne communiquer à personne votre clef privée!
    ssh-keygen affiche l’emplacement ou est ecrit le fichier clef publique  » Your public key has been saved in /.ssh/id_rsa.pub ». Par défaut elle sera dans le dossier  » ~/.ssh/id_rsa.pub » :

  2. Transférer le fichier id_rsa.pub sur l’ordinateur host_dest par ftp, scp, rsync ou la méthode que vous préférez.
    Par exemple :[code type= »shelle »]scp ~/.ssh/id_rsa.pub root@ADRESSEIP-host_dest:/var/tmp[/code]
  3. Sur l’ordinateur host_dest, connectez vous avec le compte utilisateur que vous utiliserez quand vous exécuterez la commande scp, ssh ou rsync depuis l’ordinateur host_src.
  4. Copiez le contenur du fichier id_rsa.pub dans ~/.ssh/authorized_keys en executant depuis le shell[code type= »shelle »]cat id_rsa.pub >>~/.ssh/authorized_keys
    chmod 700 ~/.ssh/authorized_keys[/code]
  5. Si le fichier authorized_keys n’existe pas il sera crée par la commande précédente. Assurez vous d’avoir supprimer le droit de lecture sur ce fichier pour les autres groupes et utilisateur.
    Si c’est une clef publique pourquoi empécher d’autre utilisateur de la lire me demanderez vous?
    Tout simplement car le propriétaire de la clef l’aura peut être distriué à un panel d’utilisateur de confiance sans pour autemps ajouter d’autre contrainte de sécurité permettant de vérifier qu’il sagit bien d’un utilisateur de confiance qui utilise la clef.

A noter que ssh n’auhorise pas (par défaut) l’utilisateur root à se connecter. A moins de spécifier le contraire sur l’ordinateur host_dest. Pour ce faire éditer le fichier /etc/ssh/sshd_configet changez l’option PermitRootLogin de no à yes. N’oubliez pas de redémarrer sshd pour prendre en compte votre changement de configuration. Ceci est à faire que si vous souhaitez utiliser le compte root pour vous connecter.

Voila c’est terminé. Désormais vous pouvez exécuter scp, ssh et rsync sur l’ordinateur host_src en vous connectant sur l’odinateur host_dest sans demande de mot de passe. A noter qu’un mot de passe vous sera demandé si vous essayer de réaliser l’opération dans le sens inverse c’est à dire de vous connectez sur l’ordinateur host_src depuis l’ordinateur host_dest, à moins de recommencer la procédure décuite ici depuis l’ordinateur host_dest!

Astuce : pour supprimer une autorisation il faut éditer le fichier ~/.ssh/authorized_keys et supprimer la ligne correspondant à la machine que vous voulez banir (cf nom host_src en fin de ligne)