I digged up this problem further and find my results below.
ssh-keyscan ignores the hosts if they are not up or sshd is not running
when used with -f <file> option. But when it encounters any error while
retrieving the host key from the machine which is up and have sshd running,
it simply exits. This may happen due to transport layer implementation in
packet.c at packet_read_poll_seqnr() which results in exiting.
My guess is that as packet.c is utilised by all OpenSSH utilities
including ssh-keyscan, we can't make ssh-keyscan to continue with
remaining hosts as specified in -f <files> in case of an error. But I also
vote for atleast
documenting this one.
regards,
M.P
----- Original Message -----
From: "ponraj" <tryponraj at gmail.com>
To: <openssh-unix-dev at mindrot.org>
Sent: Saturday, July 15, 2006 2:29 PM
Subject: ssh-keyscan exits in mid-way
> Hello All,
>
> Im using OpenSSH 4.3p2 and tyring to scan a list of 40 machines in my
> network with ssh-keyscan utility. I used the following command,
>
> ssh-keyscan -t rsa -f hosts.txt
>
> The man page says that this utility displays the host keys irrespective of
> ssh or host is up/down and its working great. But in case if the scan
> stops at 30th host due to some protocol problems, the utility exits and
> don't display the host keys for remaining machines. I think this is an
> expected behaviour, but it would be better to ignore that host continue
> till the end or atleast this can be documented specifically in the man
> page.
>
> Any comments?
>
> Thanks,
> Ponraj M