如何将值传递给psftp提示符

Gan*_*shT 16 sftp putty

我正在以编程方式创建脚本文件,并调用psftp.exe如下:

psftp user@hostname.com -pw password -b psftpscript.txt
Run Code Online (Sandbox Code Playgroud)

但它会提示用户输入

服务器的主机密钥未缓存在注册表中.您无法保证服务器是您认为的计算机.服务器的rsa2密钥指纹是:[ssh-rsa 1024 somekey]如果你信任这个主机,输入"y"将密钥添加到PuTTY的缓存并继续连接.如果要仅进行一次连接,而不将密钥添加到缓存中,请输入"n".如果您不信任此主机,请按Return键放弃连接.将密钥存储在缓存中?(Y/N)

我需要它完全迅速,自动.我尝试了-batch参数,但它只是放弃了连接

vmi*_*l85 22

在Windows Server 2008的"沙盒"环境中运行无人参与脚本时遇到了同样的问题.我最终运行了以下内容,y在您的提示符处输入:

echo y | psftp user@hostname.com -l username -pw password -b psftpscript.txt
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

注意:我只需要运行echo y一次并在第二次运行时删除它不再要求缓存密钥.

  • 注意:如果你回应`n`而不是你会得到更一致的行为.您仍将继续连接,但不会缓存密钥.每次都会问你. (14认同)
  • 按预期工作,无需用户交互即可上传不间断的文件.我甚至在接受钥匙后手动测试.脚本文件"echo n | psftp.exe ..."仍然有效. (2认同)
  • 该解决方案首先突破了密钥提供的安全性.请参阅@ReeveStrife的答案以获得最佳解决方案. (2认同)

Ger*_*ius 13

当你第一次运行它时,它会显示你的服务器密钥.复制密钥然后在命令行上,指定您的主机密钥,如下所示:

psftp yourhostAddress -hostkey 06:15:d4:3b:e4:e8:23:c0:d6:6d:45:47:7e:bd:8d:74 -l yourusername -pw yourpassword -batch


Gan*_*shT 0

我最终通过在提示符中输入“y”来将密钥添加到缓存。我只需要执行一次,之后就不再有提示了,效果很好。