java - 连接到 SOCKS5 代理以在 Java 中执行 FTP/S

标签 java ftp apache-commons socks

我正在编写一个作业,该作业将通过我的 SOCKS5 代理连接到客户端的 FTP/S 服务器,并且我正在使用 Apache Commons Net 包。问题是我的 SOCKS 代理配置为不需要身份验证,但我仍然收到以下异常:

java.net.SocketException: SOCKS : authentication failed
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:443)
    at java.net.Socket.connect(Socket.java:519)

我尝试将 java.net.socks.username 和密码属性设置为空字符串,但我仍然明白。有没有办法告诉代码不使用身份验证?深入研究底层源代码,我几乎认为它正在查询代理服务器的身份验证要求,但我不确定。

最佳答案

好吧,问题是我的 SOCKS 代理设置为要求身份验证,但也接受未进行身份验证的连接。我们使用Dante虽然像 Filezilla 这样的程序足够聪明,可以迭代所有可接受的身份验证方法,但 java.net 包似乎只使用了提供的第一个方法。由于我的 sockd.conf 文件中的身份验证配置如下:

method: username none
user.notprivileged: nobody

java.net 要求提供用户名和密码。我只是将方法翻转为“无用户名”,Filezilla 和 java.net 都正确地通过代理。这有点像 IT 解决方案,但无论怎样都能让代码正常工作,对吗?

关于java - 连接到 SOCKS5 代理以在 Java 中执行 FTP/S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982667/

相关文章:

java - JFreeChart 箱线图外观

java - 在哪里可以找到从 tomcat :run? 的 JSP 生成的 Servlet

linux - 关于 SVN 在 Linux 上的导出功能的几个问题

java - 来自 .html 的请求中的空参数列表将多部分/表单数据表单发布到 servlet 2.5 或 3.0

java - 如何将 double 组转换为集合?

java - 从文件中获取数据 - 缓冲读取器

用于字符串匹配的Java数据结构

php - ftp_login() 错误

git - 如何将 Git 存储库分支与 FTP 同步?

android - java.io.UnsupportedEncodingException : java. nio.charset.CharsetICU[UTF-8]