3

localhost と次のコード用に CoreFTP を構成しました。

JSch.setLogger(new MyJschLogger()); //class for console output

Session session = jsch.getSession("user", "localhost", 21);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

session.setPassword("password");
session.connect();

プログラムが を達成するconnect()と、コンソール出力に次の 2 つのメッセージが表示されます。

INFO: Connecting to localhost port 21
INFO: Connection established

...そして、それ以上何も起こりません。数分後、connection is closed by foreign host例外が表示されます。

なんで?

全てに感謝!

4

2 に答える 2

3

ポート 21 はFTPの通常のポートです。JSch はChannelSFTPクラスでSFTPをサポートするSSHクライアントのみです。JSch は FTP について何も知りません (また、SFTP は、名前と同様のことができること以外は、FTP とは無関係です)。

SSH プロトコルを使用するようにサーバーをセットアップする必要があります (通常はポート 22 ですが、クライアントで同じポートを使用する限り、任意のポートを使用できます)。ドキュメントを参照してください-SSHチェックボックスをオンにする必要があると思います。

また、あなたのコードがあなたが投稿したものに過ぎない場合、接続以上のことは何も起こりません. ファイルを転送するには、 ChannelSFTPを開いて、適切なコマンドを発行する必要があります (たとえば、1 つ以上の put/get メソッドを呼び出します)。

于 2011-06-29T12:03:00.790 に答える
0

私も同様の問題に直面しました:

"ERROR 2016-04-27 15:05:16,489 [CollectionThreadPool-0] com.dell.supportassist.collector.cli.executor.SSHExecutor: com.jcraft.jsch.JSchException: connection is closed by foreign host"

私の場合、チャネルはランダムに閉じられていました。また、チャネルを再接続しようとすると、再接続も失敗もしていませんでした。

これは、接続中のロジックのループが原因で発生していたため、のconnectWithoutOpenChannel代わりにメソッドを呼び出して、チャネルなしでセッションを接続しようとしましたconnectinternal()。これで私の問題は解決しました。

于 2016-04-29T12:39:29.007 に答える