31

ファイルをサーバーにアップロードしようとすると、次の例外が発生します

    com.jcraft.jsch.JSchException: Auth fail
        at com.jcraft.jsch.Session.connect(Session.java:464)
        at com.jcraft.jsch.Session.connect(Session.java:158)
        at FtpService.transferFileToReciever(FtpService.java:80)
        at FtpService.transferFileToReciever(FtpService.java:54)
        at FtpService.transferFileToRecievers(FtpService.java:44)
        at FtpService.transferSingeFile(FtpService.java:241)
        at FtpService.main(FtpService.java:26)
    Auth fail

ソースファイルからの関数 transferFileToReciever の部分は

        JSch jsch = new JSch();
        jsch.addIdentity("/root/.ssh/id_dsa");
        Session session = jsch.getSession(username, host, 22);

        session.setUserInfo(serverinfo);
        session.connect(); //geting exception here

        boolean ptimestamp = true;

sshを使用してログインできるため、パスワードは機能していますが、JSChを使用すると、キー、ユーザー名、パスワードが提供されても機能しません。Java バージョン「1.6.0_25」で id_dsa キーを使用します。エラーは何ですか?

他の同様の質問が見つかりましたが、答えはありません。前もって感謝します。

4

7 に答える 7

29

根本的な原因をたどると、最終的に、タイプ dsa の公開鍵がリモート サーバーの認証済み鍵に追加されていないことがわかりました。同じものを追加するとうまくいきました。

ssh は rsa キーで動作していたため、コードを振り返りました。

みんな、ありがとう。

于 2013-06-18T06:56:12.123 に答える
4

I have also face the Auth Fail issue, the problem with my code is that I have

channelSftp.cd("");

It changed it to

channelSftp.cd(".");

Then it works.

于 2015-04-29T05:43:19.130 に答える
3

ユーザー名/パスワードに特殊文字が含まれている場合、キャメル構成内で RAW を使用して次のような値を構成します

  • RAW(se+re?t&23)se+re?t&23実際のパスワードはどこですか

  • RAW({abc.ftp.password})ここで、{abc.ftp.password}値はスプリング プロパティ ファイルから取得されます。

RAWを使用することで、私の問題は解決しました。

http://camel.apache.org/how-do-i-configure-endpoints.html

于 2017-12-12T10:58:48.290 に答える
2

他の同様の質問が見つかりましたが、答えはありません。

この質問を見つけた場所を知ることは興味深いことでした.

私が覚えている限り、com.jcraft.jsch.JSchException: Auth cancel.addIdentity()メソッドにパスフレーズ を追加しようとしています。""キーファイルを生成せずにキーファイルを生成した場合に使用できます。エラーのもう 1 つの原因は、指紋文字列です。一致しない場合は、認証エラーも発生します (ターゲット サーバーによって異なります)。

最後に、作業中のソース コードをここに示します。醜い管理タスクを解決できた後です。

public void connect(String host, int port, 
                    String user, String pwd,
                    String privateKey, String fingerPrint,
                    String passPhrase
                  ) throws JSchException{
    JSch jsch = new JSch();

    String absoluteFilePathPrivatekey = "./";
    File tmpFileObject = new File(privateKey);
    if (tmpFileObject.exists() && tmpFileObject.isFile())
    {
      absoluteFilePathPrivatekey = tmpFileObject.getAbsolutePath();
    }

    jsch.addIdentity(absoluteFilePathPrivatekey, passPhrase);
    session = jsch.getSession(user, host, port);

    //Password and fingerprint will be given via UserInfo interface.
    UserInfo ui = new UserInfoImpl(pwd, fingerPrint);
    session.setUserInfo(ui);

    session.connect();

    Channel channel = session.openChannel("sftp");
    channel.connect();
    c = (ChannelSftp) channel;
}
于 2013-06-17T14:33:20.610 に答える