Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过SFTP/SSH接收文件并自动转发到另一台服务器上的FTP_Ftp_Sftp - Fatal编程技术网

通过SFTP/SSH接收文件并自动转发到另一台服务器上的FTP

通过SFTP/SSH接收文件并自动转发到另一台服务器上的FTP,ftp,sftp,Ftp,Sftp,我目前的情况是,我通过FTP从我的客户那里接收平面文件。一些客户端坚持需要使用SSH私钥SFTP而不是常规FTP 我想做的是设置一个web服务器(最好是在linux/unix中,但我想我可以在windows服务器上完成,并购买SFTP服务器软件),该服务器将执行以下操作: 允许我为每个具有唯一用户/通行证的客户端设置一个SFTP目录。每个目录还必须有公钥/私钥SSH“东西”。我对这个有点陌生,但我已经在谷歌上搜索过了 一旦客户端完全上传文件,我想启动一个事件,通过常规ftp将该文件传输到我的Wi

我目前的情况是,我通过FTP从我的客户那里接收平面文件。一些客户端坚持需要使用SSH私钥SFTP而不是常规FTP

我想做的是设置一个web服务器(最好是在linux/unix中,但我想我可以在windows服务器上完成,并购买SFTP服务器软件),该服务器将执行以下操作:

  • 允许我为每个具有唯一用户/通行证的客户端设置一个SFTP目录。每个目录还必须有公钥/私钥SSH“东西”。我对这个有点陌生,但我已经在谷歌上搜索过了

  • 一旦客户端完全上传文件,我想启动一个事件,通过常规ftp将该文件传输到我的Windows云

  • 这些文件的最大容量可达10mb,因此在文件完全上传之前,即使是到其他服务器的ftp也无法启动

  • 有人做过这样的事吗?任何指导都将不胜感激

    谢谢

    在Linux中,您可以使用监控文件将被发送到的目录,并让它触发您的ftp作业。它有点像cron,只是它不是基于时间触发作业,而是基于文件系统修改触发作业。为了只在写入整个文件后触发,我认为可以在inotify掩码中使用In_CLOSE_WRITE。如果做不到这一点,我建议分别为每个事件配置事件,以便将消息回显到日志文件中,并查看您是否能够识别仅在SFTP传输结束时可靠发生的事件

    如果您使用的是RedHat,它不在标准发行版中,但在Windows上,您可以使用Enterprise Edition,它支持SFTP并允许您定义各种类型的事件。触发事件后,您可以根据每个文件夹/每个帐户启动所需的任何内容


    顺便说一句,当涉及到SFTP时,它要么是密码认证,要么是公钥认证(SSH密钥),但不是两者都是。

    在UNIX服务器中,您可以将SSH配置为使用自定义SFTP服务器,而不是处理SFTP协议本身,使用密码身份验证打开到Windows SFTP服务器的新SSH连接,并将SFTP通信转发到该服务器

    使用适当的工具编写代理很容易,例如,在Perl中使用以下模块:

    您可以在
    /etc/SSH/sshd\u config
    中指示SSH服务器使用替代SFTP服务器更改配置。例如:

    Subsystem sftp /usr/local/bin/sftp-proxy-server
    

    你试过ApacheFTP服务器吗

    我想你可以用ftpletapi做你需要的事情

    见:

    这不是在滥用客户的信任吗?您的客户可能更喜欢SFTP,因为他们的数据在穿越公共互联网时会被加密。除非SFTP服务器在私有网络上与云中的FTP服务器通信,否则您最终还是会通过Internet发送未加密的数据,尽管是从您自己的服务器而不是他们的服务器发送的。事实上,我忘了提到这些数据都是公共信息,其中没有任何敏感信息。我的一些客户只是有一个政策,他们不能定期FTP了。。。只有具有SSH密钥的SFTP。有趣的是,我的windows云确实支持“SFTP”协议,但不支持整个SSH密钥。所以我可以在将文件转发到windows云时使用它。底线是,到windows云的常规FTP是可以的。我已经能够说服我的大多数客户使用常规FTP,但我这里有一对顽固的夫妇,我需要这个解决方案。如果他们支持SFTP,找到一个不支持公钥身份验证的实现是不寻常的。当然,您的云提供商可能会让您无法实际配置它,这样就没有用了。如果需要了解服务器是什么软件,可以在Linux客户机上尝试“ssh-v”,然后在调试输出的某个地方看到“远程软件版本…”。incron似乎是一个非常好的解决方案。对于简单的linux/sftp设置,您有什么建议吗?换句话说,您会推荐他们的sftp软件用于特定的linux版本吗?几乎所有现代linux发行版都包括OpenSSH,它支持带有公钥身份验证的sftp。它实际上是OpenSSH中一个独立的子系统,但RedHat和Ubuntu都默认启用了它。感谢对密码和公钥的澄清,我知道我在术语上遗漏了一些东西,我现在得到了它。谢谢。即使很少,我也看到过一些需要公钥和密码/键盘交互身份验证的设置。
    Subsystem sftp /usr/local/bin/sftp-proxy-server