Comment envoyer un mot de passe en utilisant le fichier de lot sftp

j'essaie de télécharger un fichier depuis le site de sftp en utilisant le script batch. J'obtiens l'erreur suivante:

Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer

quand on exécute la commande:

sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>

batchfile.sftp inclut ces données:

password
lcd [local folder]
cd [sftp server folder]
get *
bye

Note: cela fonctionne lorsque l'invite est

sftp <user>@<server ip>:<folder>

mais j'ai besoin de pouvoir entrer le mot de passe automatiquement.

25
demandé sur P i 2012-07-31 14:33:57
la source

4 ответов

vous voulez installer le programme sshpass. Alors:

sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH [email protected]

Évidemment, il est préférable de configurer l'authentification par clé publique. N'utilisez ceci que si c'est impossible à faire, pour une raison quelconque.

34
répondu Joe Van Dyk 2014-02-01 08:56:12
la source

si vous générez un tas de commandes à exécuter, puis appelez ce script depuis un terminal, vous pouvez essayer ce qui suit.

sftp [email protected] < /path/to/command/list

il vous sera alors demandé d'entrer votre mot de passe (comme d'habitude) cependant toutes les commandes dans le script s'exécutent après cela.

ce n'est clairement pas une option entièrement automatisée qui peut être utilisée dans un cron travail, mais il peut être utilisé à partir d'un terminal.

17
répondu Tigger 2014-02-06 04:47:53
la source

je vous conseille d'exécuter sftp avec l'option-v. Il devient beaucoup plus facile à comprendre ce qui se passe.

Le manuel stipule clairement:

le format d'utilisation final permet des sessions automatisées en utilisant le-b option. Dans de tels cas, il est nécessaire de configurer l'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 il faut établir une authentification publique. Ensuite, vous pourrez exécuter un script batch.

P. Il est faux de mettre votre mot de passe dans votre fichier de commandes.

1
répondu akond 2013-07-21 05:04:53
la source

vous mentionnez les fichiers par lots, est-ce que je me trompe en supposant 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 en 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 FTP Script: un client FTP et SFTP scriptable pour Windows qui vous permet de stocker votre mot de passe dans des "fichiers de profil" cryptés; consultez-le ici http://www.syncplify.me/products/ftp-script/

dans un cas comme dans l'autre, il est fortement recommandé de passer d'une authentification par mot de passe à une authentification par ICP.

-1
répondu FjodrSo 2015-05-18 19:55:26
la source

Autres questions sur