stiamo correndo JSch
da webMethods
server. Dopo l'aggiornamento alla nuova versione quando abbiamo provato a connetterci a uno dei nostri partner, si blocca sulla fase di connessione.
La soluzione proposta qui non ha funzionato. Ho ricevuto questo errore:
com.jcraft.jsch.JSchException: Auth non riescono
ho notato il server che stiamo cercando di connettersi a sta chiedendo per l'utente e la password prima connessione è fatto:
[[email protected] sftpTest]$ /opt/sag/95/sitcore/jvm/jvm/bin/java -jar
SftpConnect.jar
Password has been set
Timeout has been set
Kerberos username [sagtest]:
Kerberos password for sagtest:
Connected
Channel opened
Connected
Session: iui-bpjobs01.itservices.lan:22:bp-xfer-int:1738666864
L'Kerberos
utente e la password non dovrebbero esserci affatto.
Dopo piccola indagine ho trovato questa pagina: Skipping Kerberos authentication prompts with JSch
Dopo aver impostato PreferredAuthentications
ad altri valori - tutto sta funzionando benissimo. Il codice che ho aggiunto:
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
Ecco l'esempio completo che ho - forse aiuterà qualcuno a eseguire il debug del problema:
public static void main (String[] args){
String serverport = "22";
String serverhost = "XXXX";
String username = "YYYY";
String password = "ZZZZZ";
int timeout = 5000;
try{
int port = 22;
String sessionkey = null;
if(serverport != null && !serverport.trim().equals(""))
port = Integer.parseInt(serverport);
JSch jsch=new JSch();
Session session=jsch.getSession(username, serverhost, port);
jsch.setKnownHosts(System.getProperty("user.home")+"/.ssh/known_hosts");
session.setPassword(password);
System.out.println("Password has been set");
if(timeout > 0){
session.setTimeout(timeout);
System.out.println("Timeout has been set");
}
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
System.out.println("Added PreferredAuthentications");
session.connect();
System.out.println("Connected");
Channel channel = session.openChannel("sftp");
System.out.println("Channel opened");
channel.connect();
System.out.println("Connected");
if (channel.isConnected()){
sessionkey = serverhost + ":" + serverport + ":" + username + ":" + Thread.currentThread().hashCode();
}
System.out.println("Session: "+sessionkey);
}catch(Exception e){
e.printStackTrace();
}
}
Non ci sono "altre porte". La porta 22 è la porta SSH. Port 21 certamente non lo è. – EJP
so che non ci sono altre porte. Il mio problema è che mi aspettavo che generasse un'eccezione. Ma si blocca solo in session.connect() – aeycee