Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Creare un client ssh e sftp in Java

Articolo scritto da Ciro Cardone
Pagina 1 di 6

Ci sono molti framework che permettono di creare un client ssh in Java, come ad esempio:

In questo articolo vedremo come implementare un client ssh e un client sftp usando jsch, che è una pura implementazione Java di SSH2.
Jsch è, a mio modo di vedere, semplice da utilizzare, oltre che essere usato da Eclipse, Ant e JIRA.

Per avviare la connessione ssh bisogna innanzitutto creare una session con l'host remoto:

/**
 * Inizializzo il framework e creo la session
 */
JSch jsch = new JSch();

String user = "mrwebmaster";
String host = "localhost";
int port = 22;

Session session = jsch.getSession(user, host, port);
Dopo aver creato la session dobbiamo creare un channel:
/**
 * 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");
Ci sono molti tipi di channel, ma in questo articolo verranno analizzati solo il channel shell e il channel sftp, si lascia al lettore un eventuale approfondimento.

Per connettersi attraverso il channel bisogna settare nella session un oggetto che implementi l'interfaccia UserInfo.
Questa interfaccia ha i seguenti metodi:

I metodi getPassphrase e getPassword vengono invocati rispettivamente per recuperare la password o la passphrase subito dopo aver invocato promptPassphrase o promptPassword che restituiscono true se e solo se l'utente ha inserito la password o la passphrase.
Il metodo promptYesNo viene invocato quando non è possibile verificare l'autenticità dell'host remoto, e restituisce true solo se l'utente accetta la connessione ad un host non verificato. Infine il metodo showMessage viene invocato quando deve essere mostrato un messaggio all'utente.

Una volta creato il channel non resta che legare lo stdin e stdout di java al channel ed effettuare la connessione:

/**
 * 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);

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Corso Ruby e Ruby On RailsCorso Ruby e Ruby On Rails
Creare software ed applicazioni Web con Ruby e ROR. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122