jud*_*ith 34 passwords sftp batch-file
我正在尝试使用批处理脚本从sftp站点下载文件.我收到以下错误:
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
运行命令时:
sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>
Run Code Online (Sandbox Code Playgroud)
在batchfile.sftp包括这些数据:
password
lcd [local folder]
cd [sftp server folder]
get *
bye
Run Code Online (Sandbox Code Playgroud)
注意:在提示符下运行时它正在工作
sftp <user>@<server ip>:<folder>
Run Code Online (Sandbox Code Playgroud)
但我需要能够自动输入密码.
Joe*_*Dyk 42
您将要安装sshpass程序.然后:
sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@HOST
显然,最好设置公钥认证.无论出于何种原因,只有在无法做到的情况下才能使用它.
Tig*_*ger 18
如果要生成要运行的命令堆,然后从终端调用该脚本,则可以尝试以下操作.
sftp login@host < /path/to/command/list
Run Code Online (Sandbox Code Playgroud)
然后,系统会要求您输入密码(按照正常情况),但之后脚本中的所有命令都会运行.
这显然不是可以在cron作业中使用的完全自动化的选项,但它可以在终端中使用.
我建议您使用 -v 选项运行 sftp。理解正在发生的事情变得更加容易。
手册明确指出:
最终的使用格式允许使用 -b 选项进行自动会话。在这种情况下,有必要配置非交互式身份验证,以避免在连接时输入密码(有关详细信息,请参阅 sshd(8) 和 ssh-keygen(1))。
换句话说,您必须建立公钥身份验证。然后您将能够运行批处理脚本。
PS 将密码放入批处理文件中是错误的。