微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Web 服务通过 Cygwin 的 SFTP 失败

如何解决从 Web 服务通过 Cygwin 的 SFTP 失败

我有一个在 Apache 上运行的网页,它使用一组成熟的 Perl 文件来监控我们的工作场所服务器和应用程序。其中一项测试通过 Cygwin 的 SFTP,在那里列出文件并对其进行评估。

我遇到的问题是 SFTP 本身 - 当我从 cmd 手动运行部分测试作为 D:\cygwin\bin\bash.exe -c "/usr/bin/sftp -oIdentityFile=[privateKeyPath] -oStrictHostKeyChecking=no -b /cygdrive/d/WD/temp/list_SFTP.sh [user]@[hostname]"调用 非常相同的 Perl 文件作为网络它工作正常(返回文件列表,因为它应该)。当通过网页运行完全相同的代码时,它会很快失败并且不会告诉任何内容。我唯一拥有的是错误代码 255 和“连接已关闭”。没有错误流,没有冗长的输出,什么都没有,不管我用什么方法来捕获任何错误

解决方法

长话短说,罪魁祸首是 HOME 路径。

当直接从 cmd 或通过 Perl 手动运行时,D:\cygwin\bin\bash.exe -c "env" 会将 HOME 报告为 HOME=/cygdrive/c/Users/[username]/ 但是当通过网页运行报告时,同样的命令{{1} } ie root,显然在路径上的某个地方失去了家。

有了这些知识,解决方案就很简单:在 SFTP 命令前面加上正确的主路径(例如 HOME=/),您就可以开始了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。