gpt4 book ai didi

java - 如何处理Camel FTP的 "Host attempting data connection x.x.x.x is not the same as server y.y.y.y"错误?

转载 作者:行者123 更新时间:2023-11-30 01:48:09 34 4
gpt4 key购买 nike

我正在尝试使用 Camel FTP Producer 将文件发送到第三方 ftp 服务器(似乎由 Amazon 托管),但遇到了一个问题,写入文件失败,并显示:文件操作失败...主机尝试数据连接 x.x.x.x 与服务器 y.y.y.y 不同,我以前从未见过。

生产者配置为被动模式,根据 TRACE 级别的日志,该模式已启用。 (尽管错误消息听起来更多地与 Activity 模式问题相关)

y.y.y.y IP 地址是 nslookup 为目标域列出的地址之一,因此该位有意义。但是,x.x.x.x IP 与不同的 Amazon 托管服务器相关,因此我推测已经执行了某种交接或负载平衡,而 FTP 客户端不喜欢这样。

是否有某种方法可以配置 Camel FTP 以允许此操作(我假设这是一项安全功能),或者被动模式是否应该允许此操作?

我对 ftp 服务器提供商没有影响力,因此不幸的是,除了我的客户端选项之外,我无法更改任何内容。

感谢您的浏览!

最佳答案

经过一番挖掘和 grep Apache Commons FTP 的源代码后,出现问题的消息是由客户端中的验证引起的,该验证检查被动模式连接是否与初始服务器连接相同。

鉴于这似乎是一个负载平衡系统,被动模式数据连接是与目标 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。

关于java - 如何处理Camel FTP的 "Host attempting data connection x.x.x.x is not the same as server y.y.y.y"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164983/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com