9

sftp 経由でリモート サーバーにファイルをアップロードしたいと考えています。Jsch ライブラリを使用しています。以下のコードは機能しますが、Session オブジェクトに値を設定していても、常に出力コンソールからユーザー名とパスワードを入力する必要があります。Stack Overflow と Jsch のサンプルページで見たすべての例では、ユーザー入力が必要です。プログラムでパスワードを渡す方法はありますか? (ユーザー名/パスワードで認証する必要があります。SSH キーを使用できません...)

    JSch jsch = new JSch();
    ChannelSftp sftpChannel;
    Session session;
    Channel channel;
    OutputStream os;

    try {

        session = jsch.getSession("myUsername", "myHost", 22);
        session.setPassword("myPassword");
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();

        channel = session.openChannel("sftp");
        channel.connect();
        sftpChannel = (ChannelSftp) channel;
        os = sftpChannel.getOutputStream();

    } catch (Exception e) {
    }
4

2 に答える 2

0

ユーザー名とパスワードでファクトリをセットアップし、それを使用してセッションを作成できます。

    final DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
    factory.setHost(...);
    factory.setPort(...);
    factory.setUser(..);
    factory.setPassword(...);
    factory.setAllowUnknownKeys(true);
    final Session session = factory.getSession();

Spring Integration を見てください。彼らは ftp を非常に優れたメッセージング ゲートウェイに抽象化しています (質問とは直接関係ないため、ここでは詳しく説明しません)。

于 2019-02-23T14:09:10.043 に答える