为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Camel FTP 处理“主机尝试数据连接 xxxx 与服务器 yyyy 不同”错误?

如何使用 Camel FTP 处理“主机尝试数据连接 xxxx 与服务器 yyyy 不同”错误?

aluckdog 2023-04-13 14:09:16
我正在尝试使用 Camel FTP Producer 将文件发送到第三方 ftp 服务器(由 Amazon 托管),但我遇到了以前从未见过的问题Writing File failed with: File operation failed... Host attempting data connection x.x.x.x is not the same as server y.y.y.y。生产者配置为被动模式,根据 TRACE 级别的日志,这是启用的。(尽管错误消息听起来更像是与活动模式问题有关)IPy.y.y.y地址是 nslookup 为目标域列出的 IP 地址之一,因此该位有意义。但是,x.x.x.xIP 与不同的 Amazon 托管服务器相关,因此我假设已经执行了某种切换或负载平衡,而 FTP 客户端不喜欢这样。是否有某种方法可以配置 Camel FTP 以允许这样做(我假设这是一项安全功能),或者被动模式是否应该允许这样做?我对 ftp 服务器提供商没有影响,所以不幸的是,除了我的客户端选项,我不能改变任何东西。感谢您的观看!
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

在对 Apache Commons FTP 的源代码进行一些挖掘和 grep 之后,有问题的消息是由客户端中的验证引起的,该验证检查被动模式连接是否与初始服务器连接相同。


鉴于这似乎是一个负载平衡系统,被动模式数据连接是与目标 IP 不同的 IP,因此验证失败。


可以使用 Camel FTP 通过创建 FTPClient 的特定实例并设置删除验证来修复它。


FTPClient ftp = new FTPClient();

ftp.setRemoteVerificationEnabled(false);

registry.put("FTPClient", ftp);

然后在 FTP 的 URI 中引用这个对象


ftp://user@host:21/path?password=xxxx&passiveMode=true&tempPrefix=part.&ftpClient=#FTPClient

显然,通过禁用此远程验证测试,您会使自己更容易受到重定向或拦截的 FTP 数据以及您的数据被发送到您不打算发送的地方的影响,但我想如果您担心您不会使用仍然首先使用未加密的 FTP。


查看完整回答
反对 回复 2023-04-13
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信