allow hostbased auth to select RSA keys when only RSA/SHA2 are
authordjm <djm@openbsd.org>
Thu, 6 Jan 2022 22:06:51 +0000 (22:06 +0000)
committerdjm <djm@openbsd.org>
Thu, 6 Jan 2022 22:06:51 +0000 (22:06 +0000)
configured (this is the default case); ok markus@

usr.bin/ssh/sshconnect2.c

index 6a6373f..ce0f77e 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.354 2021/12/19 22:14:47 djm Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.355 2022/01/06 22:06:51 djm Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  * Copyright (c) 2008 Damien Miller.  All rights reserved.
@@ -2162,9 +2162,9 @@ userauth_hostbased(struct ssh *ssh)
                        if (authctxt->sensitive->keys[i] == NULL ||
                            authctxt->sensitive->keys[i]->type == KEY_UNSPEC)
                                continue;
-                       if (match_pattern_list(
+                       if (!sshkey_match_keyname_to_sigalgs(
                            sshkey_ssh_name(authctxt->sensitive->keys[i]),
-                           authctxt->active_ktype, 0) != 1)
+                           authctxt->active_ktype))
                                continue;
                        /* we take and free the key */
                        private = authctxt->sensitive->keys[i];
@@ -2190,7 +2190,8 @@ userauth_hostbased(struct ssh *ssh)
                error_f("sshkey_fingerprint failed");
                goto out;
        }
-       debug_f("trying hostkey %s %s", sshkey_ssh_name(private), fp);
+       debug_f("trying hostkey %s %s using sigalg %s",
+           sshkey_ssh_name(private), fp, authctxt->active_ktype);
 
        /* figure out a name for the client host */
        lname = get_local_name(ssh_packet_get_connection_in(ssh));