Connexion SSH et transfert SCP sans mot de passe.

Il peut être utile d’automatiser un transfert de fichiers entre 2 machines fonctionnant sous Linux. Généralement on utilise une connexion SSH, mais celle-ci demande un login et un mot de passe pour pouvoir fonctionner. Voici donc une solution pour contourner le problème.

Au niveau sécurité cela n’est pas très bon, car si on récupère votre clé publique, n’importe qui pourra se connecter sur votre serveur. Il est donc indispensable de bien étudier la mise en place. Si se sont des machines en interne avec un accès limité pourquoi pas, bref par moment on ne peut pas faire failement autrement.

Pour réaliser cet exploit nous allons utiliser la clé publique du serveur Centreon. En effet pour que la machine distante accepte une connexion sans mot de passe, il faut qu’il dispose de la clé publique du serveur source.

Voici une représentation graphique simple de ce que l’on veut réaliser :

  • 1ère étape : Génération des clés privées et publiques sur l’Appliance de supervision Centreon.

Connectez-vous en root sur la machine source et taper la commande suivante :

root#ssh-keygen -t dsa -b 1024

[information]A chaque qestion vous devez appuyer sur ENTREE. Il est inutile de vous dire qu’il faut laisser le champ passphrase vide, sinon cette astuce ne fonctionnera pas, car pour vous connecter il faudra saisir le passphrase.[/information]

Cette commande va générer 2 fichiers importants :

  • id_dsa qui représente la clé privée (à conserver précieusement, nommé identification pour identité
  • id_dsa.pub qui représente la clé publique

Maintenant nous devons transférer la clé publique sur notre Appliance DHCP (voir schéma plus haut) pour cela je vous conseille l’utilisation de la commande ssh-copy-id qui permet d’installer directement la clé publique au bon endroit et d’affecter les bons droits sans prise de tête.

Dans une console sur Centreon (machine source) taper la commande suivante :

root# ssh-copy -i /chemin-cle-publique root@serveur-distant

Normalement à partir d’ici vous devez pouvoir vous connectez sur la machine en SSH sans mot de passe. Si vous voulez vérifier connectez-vous sur votre machine distante puis allez dans le répertoire .ssh de l’utilisateur de connexion et vous devriez voir un fichier nommé authorized_keys.

Ce fichier contient toutes les clés publiques des personnes qui sont autorisées à se connecter sans mot de passe sur la machine.

Vous pouvez l’éditer mais jamais le modifié ou rajouter des sauts de lignes, … Vous voyez ici que j’ai 2 connexions sans mot de passe sur cette machine (ligne commençant par ssh-dss)

Maintenant il ne reste plus qu’à faire un test avec la commande scp par exemple.

root# scp admin@192.168.1.234:/data1/etc/dhcpd.lease /usr/local/nagios/libexec/dhcpstatus

Lors de la copie du fichier, aucun mot de passe ne m’est demandée.

Thats ‘All.

2 Potins

  1. Bonjour,

    merci pour ces précisions.

    @+

  2. « Attention! Au niveau sécurité cela n’est pas très bon, car si on récupère votre clé publique, n’importe qui pourra se connecter sur votre serveur. Il est donc indispensable de bien étudier la mise en place. Si se sont des machines en interne avec un accès limité pourquoi pas, bref par moment on ne peut pas faire failement autrement. »

    Je sais que ce post est vieux.. Mais quand même, une correction me semble être à apporter ^^
    Une connexion ssh ne va que dans un seul sens, donc si une machine a la clé publique d’une autre, elle ne pourra jamais se connecter sur l’autre, mais l’autre pourra se connecter sur celle-ci, en effet, il n’y a que si quelqu’un récupère la clé PRIVÉE qu’il peut accéder à toutes les machines qui ont la clé publique de cette machine.. Voilà

    Sinon, bon tuto !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *