0

FTPで機能する以下のコードがあります。SFTPで動作させるにはどうすればよいですか

((ChannelExec) channel).setCommand(cmd);
channel.setXForwarding(true);
channel.setInputStream(System.in);
InputStream in=channel.getInputStream();
channel.connect();
return in;

Channel クラスの代わりに ChannelSftp を使用する必要があることはわかっていますが、setcommand ラインで型キャスト エラーが発生します。タイプ ChannelSftp を ChannelExec にキャストできません

4

2 に答える 2

1

最初に理解しておくべきことは、SFTP は FTP や FTP/s とは異なるということです。SFTP は SSH で動作しますが、FTP/s は SSL を使用します。

そうは言っても、JSCH は、X 転送の設定を含め、SFTP を使用するための非常に簡単な方法を提供します。とmabbas からのリンクされた質問を見てください。

あなたのコメントに基づいて、実際にリモートシェルを呼び出し/実行したいようです。次のことを試して、必要なことを行うかどうかを確認してください。

//connect to the remote shell
Channel channel=session.openChannel("shell");
((ChannelShell)channel).setAgentForwarding(true);
channel.setInputStream(System.in); //Send commands here
channel.setOutputStream(System.out); //output responses here      
channel.connect();

orメソッドがないため、使用できChannelSftpませんsetCommandexec

于 2013-10-03T12:27:54.260 に答える
0

JSCH を使用している場合は、ライブラリの使用方法を示すサンプル プログラムがいくつか用意されています。SFTP クライアントの例は、SFTP セッションを開く方法を示しています。

Session session=jsch.getSession(user, host, port);
...
session.connect();

Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;

それはあなたがしなければならないすべてです。ChannelSftpファイルの送受信、ファイル リストの取得などの関数が含まれています。チャネルの入力または出力ストリームにアクセスする必要はありません。

于 2013-10-03T14:04:02.863 に答える