Forum Programmation.shell Dans un script, je voudrais pouvoir fournir les paramètres de connexion (login, password) en dur aux commandes "scp" et "ssh" comme avec la commande "wget" ci-d

Posté par  .
Étiquettes : aucune
0
15
oct.
2010
----------------------------------------------
#! /bin/bash
scp /home/carl/fich1 root@192.168.1.169:/root/fich1
wget -v --ftp-user=root --ftp-password=A10th3** ftp://192.168.1.169:/fich1
ssh 192.168.1.169 "rm -v fich1; pwd; exit"
----------------------------------------------------
le script ci-dessus me permet dans l'ordre de :
1. copier un fichier dans un machine distante (scp)
2. télécharger ce fichier depuis la machine distante (wget)
3. détruire la copie sur la machine distante après téléchargement (via ssh)

je voudrait le faire exécuter par un cron ; je voudrais ne plus avoir à renseigner le password lors de l'exécution de "scp" et "ssh"

merci de me donner un coup de main
  • # ssh-agent et clé publique

    Posté par  (site web personnel) . Évalué à 6.

    je voudrait le faire exécuter par un cron ; je voudrais ne plus avoir à renseigner le password lors de l'exécution de "scp" et "ssh"

    Pour cela il faut créer un couple de clé privée / clé publique et utiliser ssh-agent pour automatiser le tout :

    http://doc.ubuntu-fr.org/ssh#utiliser_le_ssh-agent

    http://mathieu-androz.developpez.com/articles/linux/ssh/#LIV(...)

    Le point restant est que si une phrase secrète ("passphrase") est utilisée avec la clé secrète, il faudra l'indiquer au lancement de ssh-agent.

    On peut définir une clé secrète dans phrase secrète (pour être sûr que les tâches s'executent correctement même après un redémarrage inopiné par exemple), mais dans ce cas il faut s'assurer qu'elle ne soit pas utilisable par un tiers.
    • [^] # Re: ssh-agent et clé publique

      Posté par  . Évalué à 4.

      Salut,

      La solution proposée, avec dépôt d'une clé publique sur le serveur, est certainement la meilleure. Cependant, si pour une raison quelconque ce n'est pas possible, il existe d'autres méthodes :
      - utilisation de expect pour simuler l'entrée interactive du mot de passe
      - utilisation d'un autre client ssh/sftp pour le transfert du fichier puis son effacement.

      Tu peux, par exemple, utiliser un client comme lftp (http://ftp.yar.ru/lftp/) :
      lftp -e 'put /home/carl/fich1; exit' -u root,A10th3** 192.168.1.169

      D'ailleurs, lftp peut aussi gérer le FTP, supprimer ton fichier ou afficher le répertoire courant (sn SFTP ou FTP).

      Puisque je suis en train de faire des commentaires, tu devrais aussi envisager la possibilité de mettre tes mots de passe (que ce soit pour ftp, wget, lftp ou d'autres) dans le fichier ~/.netrc : ça évite de faire traîner des mots de passe en clair dans des scripts et, surtout, de les utiliser dans les commandes appelées. N'oublie pas que, dans ce cas, le mot de passe peut être visible par tous les utilisateurs connectés sur le machine avec un simple ps...

      A+
      JJD

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.