J'essaie de télécharger un fichier depuis le site sftp à l'aide d'un script batch. Je reçois l'erreur suivante:
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
Lors de l'exécution de la commande:
sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>
le batchfile.sftp
inclut ces données:
password
lcd [local folder]
cd [sftp server folder]
get *
bye
Remarque: cela fonctionne lorsque vous exécutez l'invite en tant que
sftp <user>@<server ip>:<folder>
Mais j'ai besoin de la possibilité d'entrer le mot de passe automatiquement.
Vous voudrez installer le programme sshpass. Ensuite:
sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@Host
De toute évidence, il est préférable de configurer l'authentification par clé publique. Utilisez-le uniquement si c'est impossible, pour une raison quelconque.
Si vous générez un tas de commandes à exécuter, appelez ce script à partir d'un terminal, vous pouvez essayer ce qui suit.
sftp login@Host < /path/to/command/list
Vous serez ensuite invité à entrer votre mot de passe (comme d'habitude), mais toutes les commandes du script seront exécutées par la suite.
Il ne s'agit clairement pas d'une option entièrement automatisée pouvant être utilisée dans un travail cron
, mais pouvant être utilisée à partir d'un terminal.
Je vous conseille de lancer sftp avec l'option -v. Il devient beaucoup plus facile de comprendre ce qui se passe.
Le manuel indique clairement:
Le format d'utilisation finale permet des sessions automatisées à l'aide de l'option -b option. Dans de tels cas, il est nécessaire de configurer une authentification non interactive pour éviter d'avoir à entrer un mot de passe au moment de la connexion (voir sshd (8) et ssh-keygen (1) pour plus de détails).
En d'autres termes, vous devez établir une authentification publique. Vous pourrez ensuite exécuter un script de traitement par lots.
P.S . Il est faux de mettre votre mot de passe dans votre fichier batch.
PSFTP -b path/file_name.sftp user@IP_server -hostkey 1e:52:b1... -pw password
le contenu du fichier est:
lcd "path_file for send"
cd path_destination
mput file_name_to_send
quit
pour faire fonctionner la clé hôte:
psftp user@IP_SERVER
Vous parlez de fichiers de commandes, ai-je raison de supposer que vous parlez d'un système Windows? Si c'est le cas, vous ne pouvez pas utiliser sshpass et vous devrez passer à une autre option.
Deux de ces options, qui suivent des philosophies diamétralement opposées, sont:
Dans les deux cas, il est fortement recommandé de passer de l’authentification par mot de passe à l’authentification PKI.