it-swarm.com.de

"com.jcraft.jsch.JSchException: Auth fail" mit funktionierenden Passwörtern

Beim Versuch, die Datei auf unseren Server hochzuladen, tritt die folgende Ausnahme auf

    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

Der Teil der Funktion transferFileToReciever aus der Quelldatei ist

        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;

Die Passwörter funktionieren, da ich mich mit ssh anmelden kann, aber mit JSCh funktioniert es nicht, auch wenn Schlüssel, Benutzername und Passwort angegeben sind. Verwendung des Schlüssels id_dsa mit Java Version "1.6.0_25". Woran könnte der Fehler liegen?

Fand andere ähnliche Frage, aber nicht die Antwort. Danke im Voraus.

22
vinay

Als ich die Grundursache verfolgte, stellte ich schließlich fest, dass der öffentliche Schlüssel vom Typ dsa nicht zu den autorisierten Schlüsseln auf dem Remote-Server hinzugefügt wurde. Gleiches anhängen hat bei mir geklappt.

Das SSH arbeitete mit dem RSA-Schlüssel, was mich veranlasste, in meinem Code zurückzublicken.

vielen Dank an alle.

21
vinay

Wenn Benutzername/Passwort Sonderzeichen enthält, verwenden Sie in der Kamelkonfiguration RAW zum Konfigurieren der Werte wie

  • RAW(se+re?t&23) wobei se+re?t&23 das tatsächliche Passwort ist

  • RAW({abc.ftp.password}) wobei {abc.ftp.password} Werte aus einer Federeigenschaftendatei stammen.

Durch die Verwendung von RAW wurde mein Problem gelöst.

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

3
Deepak Singla

Beispielfall, wenn ich eine Datei vom Remote-Server erhalte und sie auf einem lokalen Computer speichere
Paketverbinder;

import Java.io.File;
import Java.io.FileNotFoundException;
import Java.io.FileOutputStream;
import Java.io.IOException;
import Java.io.InputStream;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

public class Main {

    public static void main(String[] args) throws JSchException, SftpException, IOException {
        // TODO Auto-generated method stub
        String username = "XXXXXX";
        String Host = "XXXXXX";
        String passwd = "XXXXXX";
        JSch conn = new JSch();
        Session session = null;
        session = conn.getSession(username, Host, 22);
        session.setPassword(passwd);
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();

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

        channel.cd("/tmp/qtmp");

        InputStream in = channel.get("testScp");
        String lf = "OBJECT_FILE";
        FileOutputStream tergetFile = new FileOutputStream(lf);

        int c;
        while ( (c= in.read()) != -1 ) {
            tergetFile.write(c);
        } 

        in.close();
        tergetFile.close();

        channel.disconnect();
        session.disconnect();   

    }

}
3

Fand andere ähnliche Frage, aber nicht die Antwort.

Es wäre interessant gewesen zu wissen, wo Sie diese Frage gefunden haben.

Soweit ich mich erinnern kann und com.jcraft.jsch.JSchException: Auth cancel versuche, der Methode .addIdentity() eine Passphrase hinzuzufügen. Sie können "" für den Fall, dass Sie eine Schlüsseldatei ohne eine generiert haben. Eine weitere Fehlerquelle ist die Fingerabdruckzeichenfolge. Wenn dies nicht der Fall ist, tritt ebenfalls ein Authentifizierungsfehler auf (abhängig vom Zielserver).

Und endlich hier mein funktionierender Quellcode - nachdem ich die hässlichen Administrationsaufgaben lösen konnte:

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;
}
2
reporter

Ich habe auch das Problem Auth Fail, das Problem mit meinem Code ist, dass ich habe

channelSftp.cd("");

Es änderte es zu

channelSftp.cd(".");

Dann klappt es.

2
Harry

Versuchen Sie, die Authentifizierungsmethode wie folgt explizit hinzuzufügen, da dies manchmal erforderlich ist:

session.setConfig("PreferredAuthentications", "password");
1
Amit Pawar

in meinem Fall habe ich folgende Abhängigkeit verwendet

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.42</version>
</dependency> 

und immer die gleiche Ausnahme von Auth fehlschlagen, aber aktualisierte Abhängigkeit unter Version und Problem gelöst werden.

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.54</version>
</dependency>
0
Pankaj