ssh-agent est un programme qui sert à manipuler des clefs utilisées pour une authentification par clef publique (RSA, DSA).
ssh-add ajoute des identités RSA ou DSA à l'agent d'authentification
Je fais donc appel à ces eux avant le lancement du sftp. Seulement voilà, lorsque le cron lance le programme, rien n'aboutit.
Je décide de lancer les commandes une à une à la mano pour voir ou ça bloque: ça passe nickel, pas de soucis.
Le seul truc c'est qu'il me demande la "passphrase" lié à ma clé (passphrase qui soit dit en passant est vide). Mais comme je suis là pour taper sur entrée tout se passe bien.
Après de longues recherche, et quelques cheveux en moins (ou devenus blancs, ça dépend), j'ai trouvé la solution.
Je dois permettre à sftp de dialoguer avec l'agent pour obtenir la clé tout seul comme un grand, et donc ne plus demander la passphrase.
Lorsque ssh-agent est démarré, il retourne le code shell à exécuter. Utiliser "eval" permet le dialogue.


L'avantage de la solution est que tout fonctionne en automatique pendant que je dors, et que comme c'est un fichier php qui génère le fichier "commandes.sh", je peux envoyer de 0 à n fichiers selon les jours sans me soucier de rien. Voici donc les fichiers tels qu'ils sont au final .

Le fichier commandes.sh:
put /chemin/vers/fichier/fichier1
put /chemin/vers/fichier/fichier2
put /chemin/vers/fichier/fichier3
bye
EOF
Le fichier exec_commandes.sh:
#!/bin/bash

eval `ssh-agent`
ssh-add "/home/user/.ssh/cle_rsa"
sftp  -b /chemin/vers/fichier/commandes.sh -o IdentityFile="nom_fichier_cle" user@host_sftp
eval `ssh-agent -k`


MAJ:ajout de la ligne "eval `ssh-agent -k`" qui permet de tuer le processus ssh-agent et d'éviter lors d'une automatisation par cron, une accumulation de processus ssh-agent ouverts.