web-dev-qa-db-fra.com

Comment envoyer un mot de passe en utilisant un fichier batch sftp

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.

29
judith

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.

37
Joe Van Dyk

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.

16
Tigger

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.

1
akond
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
0
user10558384

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:

  • psftp: outil de ligne de commande que vous pouvez appeler depuis vos scripts batch; psftp fait partie du paquet PuTTY et vous pouvez le trouver ici http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html 
  • Syncplify.me Script FTP: un client scriptable FTP/S et SFTP pour Windows qui vous permet de stocker votre mot de passe dans des "fichiers de profil" cryptés; regardez ici http://www.syncplify.me/products/ftp-script/

Dans les deux cas, il est fortement recommandé de passer de l’authentification par mot de passe à l’authentification PKI.

0
FjodrSo