2

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 および password プロパティを空の文字列に設定しようとしましたが、それでも取得できます。認証を使用しないようにコードに指示する方法はありますか? 基礎となるソースを掘り下げると、認証要件についてプロキシ サーバーにクエリを実行していると思われますが、よくわかりません。

4

1 に答える 1

3

問題は、SOCKS プロキシ認証を要求するように設定されていましたが、認証されなかった接続も受け入れるように設定されていたことです。私たちはDanteを使用しており、Filezilla のようなプログラムは、受け入れ可能なすべての認証方法を反復するのに十分なほどスマートですが、java.net パッケージは、提供された最初の方法からしか機能しないようです。私の sockd.conf ファイルの認証設定は次のとおりだったので:

method: username none
user.notprivileged: nobody

java.net はユーザー名とパスワードを要求していました。メソッドを「ユーザー名なし」に変更しただけで、Filezilla と java.net の両方が正しくプロキシを通過します。これはちょっとした IT ソリューションですが、コードを機能させるものは何でしょうか?

于 2010-10-21T14:07:32.910 に答える