Salve ragazzi ho due classi che mi permettono di connettermi a un server su cui gira il demone ssh. Per connnettermi passo una stringa del tipo nomeutente@indirizzohost:numero porta. Quando effettuo la connessione e premo yes per poter inserire la password successivamente ho questo errore :
codice:Are you sure to want to continue connecting? yes com.jcraft.jsch.JSchException : Auth fail at com.jcraft.jsch.Session.connect<Session.java:461> at com.jcraft.jsch.Session.connect<Session.java:154> at SshClient.main<Sshclient.java:61>
La classe SshClient è la seguente :
codice:import com.jcraft.jsch.ChannelShell; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.UserInfo; public class SshClient { public static void main(String[] args) { try { /** * Verifico che la stringa di connessione sia corretta */ if (args.length == 0) { System.out.println("Usage: user@host:port"); return; } if (!args[0].contains("@")) { System.out.println("Usage: user@host:port"); } /** * Recupero utente, host e porta */ String user = args[0].substring(0, args[0].indexOf('@')); String host = null; /** * La porta di default dell'ssh è 22 */ int port = 22; if (args[0].contains(":")) { host = args[0].substring(args[0].indexOf('@') + 1, args[0].indexOf(":")); port = Integer.parseInt(args[0].substring(args[0].indexOf(':') + 1)); } else { host = args[0].substring(args[0].indexOf('@') + 1); } /** * Inizializzo il framework e creo la session */ JSch jsch = new JSch(); Session session = jsch.getSession(user, host, port); /** * Setto la classe UserInfo per recupare la password dell'utente */ UserInfo ui = new MrWebmasterUserInfo(); session.setUserInfo(ui); /** * Eseguo la connessione della sessione */ session.connect(); /** * Creo il channel shell */ ChannelShell channel = (ChannelShell) session.openChannel("shell"); /** * Associo stdin e stdout */ channel.setInputStream(System.in); /** * per Windows * * channel.setInputStream(new FilterInputStream(System.in) { public * int read(byte[] b, int off, int len) throws IOException { return * in.read(b, off, (len > 1024 ? 1024 : len)); } }); */ channel.setOutputStream(System.out); /** * Eseguo la connessione con un timeout di 3 secondi */ channel.connect(3000); /** * Controllo ogni secondo se il canale è stato chiuso */ while (true) { if (channel.isClosed()) { System.exit(channel.getExitStatus()); } else { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } catch (JSchException e) { e.printStackTrace(); } } }

Rispondi quotando