SSH-KEYSCAN(1)              General Commands Manual             SSH-KEYSCAN(1)

NAME
     ssh-keyscan M-bM-^@M-^S gather ssh public keys

SYNOPSIS
     ssh-keyscan [-46cHv] [-f file] [-p port] [-T timeout] [-t type]
                 [host | addrlist namelist] ...

DESCRIPTION
     ssh-keyscan is a utility for gathering the public ssh host keys of a
     number of hosts.  It was designed to aid in building and verifying
     ssh_known_hosts files.  ssh-keyscan provides a minimal interface suitable
     for use by shell and perl scripts.

     ssh-keyscan uses non-blocking socket I/O to contact as many hosts as
     possible in parallel, so it is very efficient.  The keys from a domain of
     1,000 hosts can be collected in tens of seconds, even when some of those
     hosts are down or do not run ssh.  For scanning, one does not need login
     access to the machines that are being scanned, nor does the scanning
     process involve any encryption.

     The options are as follows:

     -4      Forces ssh-keyscan to use IPv4 addresses only.

     -6      Forces ssh-keyscan to use IPv6 addresses only.

     -c      Request certificates from target hosts instead of plain keys.

     -f file
             Read hosts or M-bM-^@M-^\addrlist namelistM-bM-^@M-^] pairs from file, one per line.
             If - is supplied instead of a filename, ssh-keyscan will read
             hosts or M-bM-^@M-^\addrlist namelistM-bM-^@M-^] pairs from the standard input.

     -H      Hash all hostnames and addresses in the output.  Hashed names may
             be used normally by ssh and sshd, but they do not reveal
             identifying information should the file's contents be disclosed.

     -p port
             Port to connect to on the remote host.

     -T timeout
             Set the timeout for connection attempts.  If timeout seconds have
             elapsed since a connection was initiated to a host or since the
             last time anything was read from that host, then the connection
             is closed and the host in question considered unavailable.
             Default is 5 seconds.

     -t type
             Specifies the type of the key to fetch from the scanned hosts.
             The possible values are M-bM-^@M-^\rsa1M-bM-^@M-^] for protocol version 1 and M-bM-^@M-^\dsaM-bM-^@M-^],
             M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^], or M-bM-^@M-^\rsaM-bM-^@M-^] for protocol version 2.  Multiple
             values may be specified by separating them with commas.  The
             default is to fetch M-bM-^@M-^\rsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], and M-bM-^@M-^\ed25519M-bM-^@M-^] keys.

     -v      Verbose mode.  Causes ssh-keyscan to print debugging messages
             about its progress.

SECURITY
     If an ssh_known_hosts file is constructed using ssh-keyscan without
     verifying the keys, users will be vulnerable to man in the middle
     attacks.  On the other hand, if the security model allows such a risk,
     ssh-keyscan can help in the detection of tampered keyfiles or man in the
     middle attacks which have begun after the ssh_known_hosts file was
     created.

FILES
     Input format:

     1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4

     Output format for RSA1 keys:

     host-or-namelist bits exponent modulus

     Output format for RSA, DSA, ECDSA, and Ed25519 keys:

     host-or-namelist keytype base64-encoded-key

     Where keytype is either M-bM-^@M-^\ecdsa-sha2-nistp256M-bM-^@M-^], M-bM-^@M-^\ecdsa-sha2-nistp384M-bM-^@M-^],
     M-bM-^@M-^\ecdsa-sha2-nistp521M-bM-^@M-^], M-bM-^@M-^\ssh-ed25519M-bM-^@M-^], M-bM-^@M-^\ssh-dssM-bM-^@M-^] or M-bM-^@M-^\ssh-rsaM-bM-^@M-^].

     /etc/ssh/ssh_known_hosts

EXAMPLES
     Print the rsa host key for machine hostname:

     $ ssh-keyscan hostname

     Find all hosts from the file ssh_hosts which have new or different keys
     from those in the sorted file ssh_known_hosts:

     $ ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | \
             sort -u - ssh_known_hosts | diff ssh_known_hosts -

SEE ALSO
     ssh(1), sshd(8)

AUTHORS
     David Mazieres <dm@lcs.mit.edu> wrote the initial version, and Wayne
     Davison <wayned@users.sourceforge.net> added support for protocol version
     2.

BUGS
     It generates "Connection closed by remote host" messages on the consoles
     of all the machines it scans if the server is older than version 2.9.
     This is because it opens a connection to the ssh port, reads the public
     key, and drops the connection as soon as it gets the key.

OpenBSD 6.0                    November 8, 2015                    OpenBSD 6.0
