java, sshtools, knownhost e windows

Sto cercando di utilizzare sshtool http://sourceforge.net/projects/sshtools/ per creare un client java per scaricare dei file via sFTP.

sshtools è molto semplice da usare, e almeno per quel che mi riguarda funziona benissimo. C’è solo un piccolo problema per quel che riguarda Windows, e dove lui posiziona la lista degli knowhosts.

Su linux il file si trova in /home/nicola/.ssh/known_hosts. Su windows, questo file si trova… insomma… è un pò ovunque. Ogni applicazione fa un pò come gli pare.

Su questo sito ho trovato un pò di chiarezza: http://www.jfitz.com/tips/ssh_for_windows.html. Per esempio:

PuTTY inserisce la lista degli host nel file di registro:

HKEY_CURRENT_USER->Software->SimonTatham->PuTTY->SshHostKeys

Anche WinSCP lo fa, ma in u’altra chiave:

HKEY_CURRENT_USER->Software->Martin Prikryl->WinSCP 2->SshHostKeys

Altri programmi usano directory e file diversi.

sshtools è convinto di essere su una macchina linux, basta andare a spulciare la classe:

ConsoleKnownHostsKeyVerification

e vedere il metodo

public ConsoleKnownHostsKeyVerification() throws InvalidHostFileException {

super(new File(System.getProperty("user.home"),
".ssh" + File.separator + "known_hosts").getAbsolutePath());

}

Va a cercare il file host esattamente dove ci aspetterebbe di trovarlo su una macchina linux.

Quindi, su una macchina windows, ogni volta che eseguo un collegamento, mi viene fatta sempre la domanda:

Do you want to allow this host key? [Yes|No|Always]:

Domanda a cui ovviamente bisogna rispondere Yes. Io per ovviare a questo inconveniente ho messo mano alle classi originali, a malincuore. Ed ho modificato il metodo getResponse della classe ConsoleKnownHostsKeyVerification del package com.sshtools.j2ssh.transport, in questo modo:

private void getResponse(String host, SshPublicKey pk) throws InvalidHostFileException, IOException {

allowHost(host, pk, false);

}

Non ho tempo di trovare una maniera migliore per ovviare la cosa.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>