如何使用sftp批处理文件发送密码

时间:2012-07-31 10:33:58

标签: batch-file passwords sftp

我正在尝试使用批处理脚本从sftp站点下载文件。我收到以下错误:

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

运行命令时:

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

batchfile.sftp包含以下数据:

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

注意:在提示符下运行时它正在运行

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

但我需要能够自动输入密码。

6 个答案:

答案 0 :(得分:42)

您需要安装sshpass程序。然后:

sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@HOST

显然,最好设置公钥认证。只有在无论出于何种原因无法做到的情况下才使用它。

答案 1 :(得分:16)

如果要生成要运行的命令堆,然后从终端调用该脚本,则可以尝试以下操作。

sftp login@host < /path/to/command/list

然后会要求您输入密码(按照正常情况),但是之后脚本中的所有命令都会运行。

这显然不是可以在cron作业中使用的完全自动化选项,但可以在终端中使用。

答案 2 :(得分:1)

我建议你用-v选项运行sftp。它变得更容易理解正在发生的事情。

手册明确指出:

  

最终使用格式允许使用-b进行自动会话   选项。        在这种情况下,需要配置非交互式身份验证         避免在连接时输入密码的需要(见        sshd(8)和ssh-keygen(1)了解详情。

换句话说,您必须建立一个publickey身份验证。然后,您将能够运行批处理脚本。

P.S。 将密码放入批处理文件中是错误的。

答案 3 :(得分:0)

PSFTP -b path/file_name.sftp user@IP_server -hostkey 1e:52:b1... -pw password

文件内容为:

lcd "path_file for send"

cd path_destination

mput file_name_to_send

quit

运行主机密钥:

psftp  user@IP_SERVER

答案 4 :(得分:0)

您需要使用命令pscp并强制其通过sftp协议。当您安装PuttY(通过ssh连接到linux服务器的软件)时,会自动安装pscp。

当您有pscp命令时,这里是命令行:

pscp -sftp -pw <yourPassword> "<pathToYourFile(s)>" <username>@<serverIP>:<PathInTheServerFromTheHomeDirectory>

这些参数(-sftp和-pw)仅适用于pscp,不适用于scp。如果要以递归方式上载文件夹中的所有内容,也可以添加-r。

答案 5 :(得分:-1)

你提到批处理文件,我是否正确然后假设你在谈论Windows系统?如果是这样,你就不能使用sshpass,你将不得不切换到另一个选项。

两种完全相反的哲学背后的选择是:

      
  • psftp:您可以在批处理脚本中调用的命令行工具; psftp是PuTTY包的一部分,你可以在这里找到它http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html   
  • Syncplify.me FTP脚本:适用于Windows的可编写脚本的FTP / S和SFTP客户端,允许您将密码存储在加密的“配置文件”中;在这里查看http://www.syncplify.me/products/ftp-script/

无论哪种方式,强烈建议从密码切换到PKI身份验证。

相关问题