[PATCH] wildcard host keys

Jamie Lokier jamie at shareable.org
Thu Sep 14 23:24:53 WST 2006


I'm using dropbear on an embedded device that has to connect to a
server at an IP address that isn't known in advance, but is verifiable
with a host key.

So I added the ability to use "*" in the known_hosts file to match any
hostname/IP.  This is better than disabling host key checking
altogether, as I can still verify it's connecting to an authorized
server.

Someone else may find the patch useful.

-- Jamie


This allows the known_hosts file to use wildcard "*" to match any host.
This is used to prevent the interactive "y/n" question as long as the
host key is in the recognised list - essential for non-interactive setup
of tunnels, to IPs that aren't known when the /root directory is created.

--- dropbear-0.46/cli-kex.c.orig	2006-08-30 03:49:40.000000000 +0100
+++ dropbear-0.46/cli-kex.c	2006-08-30 03:58:54.000000000 +0100
@@ -202,6 +202,14 @@
 			break;
 		}
 
+		/* Match "*" wildcard hostname. */
+		if (line->len >= 2
+		    && strncmp("* ", buf_getptr(line, 2), 2) == 0) {
+			buf_incrpos(line, 2);
+			TRACE(("matched wildcard host"))
+			goto check_algo;
+		}
+
 		/* The line is too short to be sensible */
 		/* "30" is 'enough to hold ssh-dss plus the spaces, ie so we don't
 		 * buf_getfoo() past the end and die horribly - the base64 parsing
@@ -225,6 +233,7 @@
 			continue;
 		}
 
+	check_algo:
 		if ( strncmp(buf_getptr(line, algolen), algoname, algolen) != 0) {
 			TRACE(("algo doesn't match"))
 			continue;




More information about the Dropbear mailing list