blob: f6596c4813148a35ba771c604b41f57731944816 [file] [log] [blame]
Damien Miller495dca32003-04-01 21:42:14 +10001.\" $OpenBSD: ssh-keyscan.1,v 1.15 2003/03/28 10:11:43 jmc Exp $
Ben Lindstromb22c2b82001-03-05 06:50:47 +00002.\"
3.\" Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
4.\"
5.\" Modification and redistribution in source and binary forms is
6.\" permitted provided that due credit is given to the author and the
Ben Lindstroma238f6e2001-06-09 01:30:39 +00007.\" OpenBSD project by leaving this copyright notice intact.
Ben Lindstrom36579d32001-01-29 07:39:26 +00008.\"
Ben Lindstromb6434ae2000-12-05 01:15:09 +00009.Dd January 1, 1996
Ben Lindstromb22c2b82001-03-05 06:50:47 +000010.Dt SSH-KEYSCAN 1
Ben Lindstromb6434ae2000-12-05 01:15:09 +000011.Os
12.Sh NAME
13.Nm ssh-keyscan
14.Nd gather ssh public keys
15.Sh SYNOPSIS
16.Nm ssh-keyscan
Damien Miller495dca32003-04-01 21:42:14 +100017.Bk -words
Ben Lindstrom325e70c2001-08-06 22:41:30 +000018.Op Fl v46
19.Op Fl p Ar port
20.Op Fl T Ar timeout
21.Op Fl t Ar type
22.Op Fl f Ar file
23.Op Ar host | addrlist namelist
24.Op Ar ...
Damien Miller495dca32003-04-01 21:42:14 +100025.Ek
Ben Lindstromb6434ae2000-12-05 01:15:09 +000026.Sh DESCRIPTION
27.Nm
28is a utility for gathering the public ssh host keys of a number of
Damien Miller495dca32003-04-01 21:42:14 +100029hosts.
30It was designed to aid in building and verifying
Ben Lindstromb6434ae2000-12-05 01:15:09 +000031.Pa ssh_known_hosts
32files.
33.Nm
34provides a minimal interface suitable for use by shell and perl
35scripts.
36.Pp
37.Nm
38uses non-blocking socket I/O to contact as many hosts as possible in
Damien Miller495dca32003-04-01 21:42:14 +100039parallel, so it is very efficient.
40The keys from a domain of 1,000
Ben Lindstromb6434ae2000-12-05 01:15:09 +000041hosts can be collected in tens of seconds, even when some of those
Damien Miller495dca32003-04-01 21:42:14 +100042hosts are down or do not run ssh.
43For scanning, one does not need
Ben Lindstrom594e2032001-09-12 18:35:30 +000044login access to the machines that are being scanned, nor does the
45scanning process involve any encryption.
Ben Lindstrom0b5afb92001-08-06 22:01:29 +000046.Pp
47The options are as follows:
Ben Lindstromb6434ae2000-12-05 01:15:09 +000048.Bl -tag -width Ds
Ben Lindstrom325e70c2001-08-06 22:41:30 +000049.It Fl p Ar port
50Port to connect to on the remote host.
Ben Lindstrom8d066fb2001-09-12 17:06:13 +000051.It Fl T Ar timeout
Damien Miller495dca32003-04-01 21:42:14 +100052Set the timeout for connection attempts.
53If
Ben Lindstromb6434ae2000-12-05 01:15:09 +000054.Pa timeout
55seconds have elapsed since a connection was initiated to a host or since the
56last time anything was read from that host, then the connection is
Damien Miller495dca32003-04-01 21:42:14 +100057closed and the host in question considered unavailable.
58Default is 5 seconds.
Ben Lindstrom325e70c2001-08-06 22:41:30 +000059.It Fl t Ar type
Ben Lindstrom8d066fb2001-09-12 17:06:13 +000060Specifies the type of the key to fetch from the scanned hosts.
Ben Lindstrom325e70c2001-08-06 22:41:30 +000061The possible values are
62.Dq rsa1
63for protocol version 1 and
64.Dq rsa
65or
66.Dq dsa
67for protocol version 2.
68Multiple values may be specified by separating them with commas.
69The default is
70.Dq rsa1 .
71.It Fl f Ar filename
Ben Lindstrom24643222001-06-25 05:08:11 +000072Read hosts or
Ben Lindstromb6434ae2000-12-05 01:15:09 +000073.Pa addrlist namelist
74pairs from this file, one per line.
75If
76.Pa -
77is supplied instead of a filename,
78.Nm
Ben Lindstrom24643222001-06-25 05:08:11 +000079will read hosts or
Ben Lindstromb6434ae2000-12-05 01:15:09 +000080.Pa addrlist namelist
81pairs from the standard input.
Ben Lindstrom325e70c2001-08-06 22:41:30 +000082.It Fl v
83Verbose mode.
84Causes
85.Nm
86to print debugging messages about its progress.
87.It Fl 4
88Forces
89.Nm
90to use IPv4 addresses only.
91.It Fl 6
92Forces
93.Nm
94to use IPv6 addresses only.
Ben Lindstromd26dcf32001-01-06 15:18:16 +000095.El
Ben Lindstrom0b5afb92001-08-06 22:01:29 +000096.Sh SECURITY
Ben Lindstrom594e2032001-09-12 18:35:30 +000097If a ssh_known_hosts file is constructed using
Ben Lindstrom0b5afb92001-08-06 22:01:29 +000098.Nm
Ben Lindstrom594e2032001-09-12 18:35:30 +000099without verifying the keys, users will be vulnerable to
Ben Lindstrom0b5afb92001-08-06 22:01:29 +0000100.I man in the middle
101attacks.
Ben Lindstrom594e2032001-09-12 18:35:30 +0000102On the other hand, if the security model allows such a risk,
Ben Lindstrom0b5afb92001-08-06 22:01:29 +0000103.Nm
Ben Lindstrom594e2032001-09-12 18:35:30 +0000104can help in the detection of tampered keyfiles or man in the middle
105attacks which have begun after the ssh_known_hosts file was created.
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000106.Sh EXAMPLES
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000107.Pp
108Print the
109.Pa rsa1
110host key for machine
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000111.Pa hostname :
112.Bd -literal
Damien Miller7af3d102002-02-19 15:19:42 +1100113$ ssh-keyscan hostname
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000114.Ed
115.Pp
116Find all hosts from the file
117.Pa ssh_hosts
118which have new or different keys from those in the sorted file
119.Pa ssh_known_hosts :
120.Bd -literal
Damien Miller7af3d102002-02-19 15:19:42 +1100121$ ssh-keyscan -t rsa,dsa -f ssh_hosts | \e\
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000122 sort -u - ssh_known_hosts | diff ssh_known_hosts -
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000123.Ed
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000124.Sh FILES
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000125.Pa Input format:
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000126.Bd -literal
Ben Lindstromb6434ae2000-12-05 01:15:09 +00001271.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000128.Ed
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000129.Pp
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000130.Pa Output format for rsa1 keys:
131.Bd -literal
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000132host-or-namelist bits exponent modulus
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000133.Ed
134.Pp
135.Pa Output format for rsa and dsa keys:
136.Bd -literal
137host-or-namelist keytype base64-encoded-key
138.Ed
139.Pp
140Where
141.Pa keytype
142is either
143.Dq ssh-rsa
144or
145.Dq ssh-dsa .
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000146.Pp
Damien Miller05eda432002-02-10 18:32:28 +1100147.Pa /etc/ssh/ssh_known_hosts
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000148.Sh BUGS
149It generates "Connection closed by remote host" messages on the consoles
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000150of all the machines it scans if the server is older than version 2.9.
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000151This is because it opens a connection to the ssh port, reads the public
152key, and drops the connection as soon as it gets the key.
153.Sh SEE ALSO
Ben Lindstromb22c2b82001-03-05 06:50:47 +0000154.Xr ssh 1 ,
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000155.Xr sshd 8
Ben Lindstromd2bf0d62001-06-25 04:10:54 +0000156.Sh AUTHORS
Ben Lindstromb6434ae2000-12-05 01:15:09 +0000157David Mazieres <dm@lcs.mit.edu>
Ben Lindstrom325e70c2001-08-06 22:41:30 +0000158wrote the initial version, and
159Wayne Davison <wayned@users.sourceforge.net>
160added support for protocol version 2.