我正在尝试通过FTP站点代理访问FTP服务器以使用it.sauronsoftware.ftp4j.FTPClient
绕过防火墙我知道我的用户名/密码是正确的,因为我可以使用FileZilla进行连接。我尝试使用Authenticator
,但没有用。代码:
import java.net.Authenticator;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.connectors.FTPProxyConnector;
...
FTPClient client = new FTPClient();
FTPProxyConnector connector = new FTPProxyConnector(String "proxyHost", int proxyPort);
client.setConnector(connector);
Authenticator.setDefault(new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("proxyUser", "proxyPass".toCharArray());
}});
System.setProperty("ftp.proxyHost", "proxyHost");
System.setProperty("ftp.proxyPort", "proxyPort");
System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPass", "proxyPass");
System.out.println("Proxy Accessed");
client.connect("ftpHost");
client.login("ftpUser", "ftpPass");
给我这个错误:java.io.IOException: Proxy authentication failed
我尝试过的事情:
(String, int, String, String)
。Authenticator
Authenticator
,不使用FTPProxyConnector 但是,当我只是使用身份验证器时,我收到一个不同的错误Connection timed out
。
这两个错误都发生在client.connect("ftpHost");
行
任何帮助将不胜感激。
编辑:我发现代理用于绕过Firewall-1检查点 - 如果这有帮助。
答案 0 :(得分:1)
检查密码属性名称。它的名称是ftp.proxyPassword,而不是ftp.proxyPass。
System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");
尝试一下,让我们知道你的结果!
答案 1 :(得分:1)
检查密码属性名称。它的名称是ftp.proxyPassword,而不是ftp.proxyPass。
System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");
尝试一下,让我们知道你的结果!
答案 2 :(得分:1)
我找到了解决方案......
我发现FTP客户端使用不同的响应代码进行响应:
200-User <username> authenticated by FireWall-1 authentication
在FTPProxyConnector
的源代码中,响应代码不是常规
230-Connected to server. Logging in...
会抛出错误。
我必须对FTPProxyConnector
的类文件进行反编译,然后修改源代码,然后重新编译并将其保存回jar。工作就像一个魅力。