I know about that configuration setting.. But, I was hesitant to use it. Looks like, I need to ask the user whether (s)he confirms the fingerprint. And based on that selection, i should try setting this configuration setting.

In case I need more info, will get back to you.


On Wed, Sep 22, 2010 at 8:02 PM, Atsuhiko Yamanaka <ymnk@jcraft.com> wrote:

  +-From: Manikandan Chandrasekaran <mani.chandrasekaran@gmail.com> --
  |_Date: Wed, 22 Sep 2010 19:10:08 +0530 ____________________________
  |If my known hosts file already has the host key of the remote machine, my
  |connection code works fine. If not, then it doesn't work.

  |My code does the following (high level)
  |* setKnownHosts (to my known hosts file)
  |* Session session = jsch.getSession(user, host, 22);
  |* session.setPassword(password);
  |* session.connect()

  |In case of an exception (UnknownHostKey), I do this:
  |  HostKey hk = session.getHostKey();
  |  HostKeyRepository repo = jsch.getHostKeyRepository();
  |  repo.add(hk, null);

  |Throws a NullPointerException as hk is null. (This makes sense as the
  |session might not have the required info.)  How can I get the host key of
  |the remote machine and add it?

Unfortunately, in the current implementation,
session.getHostKey() will return null, if you reject to accept
the remote hostkey.

How about using JSch#setHostKeyRepository() ?

 session.setConfig("StrictHostKeyChecking", "no");

Atsuhiko Yamanaka
SENDAI, MIYAGI 980-0014 Japan.
Tel +81-22-723-2150
Skype callto://jcraft/
Twitter: @ymnk