Add a "Host" line to the output of ssh -G showing the original host arg.
authordtucker <dtucker@openbsd.org>
Fri, 13 Jan 2023 02:58:20 +0000 (02:58 +0000)
committerdtucker <dtucker@openbsd.org>
Fri, 13 Jan 2023 02:58:20 +0000 (02:58 +0000)
Inspired by patch from vincent at bernat.ch via bz#3343, ok djm@

usr.bin/ssh/readconf.c
usr.bin/ssh/readconf.h
usr.bin/ssh/ssh.c

index 8bbaabf..0b18888 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.c,v 1.371 2023/01/02 07:03:30 djm Exp $ */
+/* $OpenBSD: readconf.c,v 1.372 2023/01/13 02:58:20 dtucker Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2313,6 +2313,7 @@ void
 initialize_options(Options * options)
 {
        memset(options, 'X', sizeof(*options));
+       options->host_arg = NULL;
        options->forward_agent = -1;
        options->forward_agent_sock_path = NULL;
        options->forward_x11 = -1;
@@ -3257,6 +3258,7 @@ dump_client_config(Options *o, const char *host)
        free(all_key);
 
        /* Most interesting options first: user, host, port */
+       dump_cfg_string(oHost, o->host_arg);
        dump_cfg_string(oUser, o->user);
        dump_cfg_string(oHostname, host);
        dump_cfg_int(oPort, o->port);
index 5c19a12..2ce1b4c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.h,v 1.149 2022/11/28 01:37:36 djm Exp $ */
+/* $OpenBSD: readconf.h,v 1.150 2023/01/13 02:58:20 dtucker Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -28,6 +28,7 @@ struct allowed_cname {
 };
 
 typedef struct {
+       char   *host_arg;       /* Host arg as specified on command line. */
        int     forward_agent;  /* Forward authentication agent. */
        char   *forward_agent_sock_path; /* Optional path of the agent. */
        int     forward_x11;    /* Forward X11 display. */
index 9530902..9cbd69a 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh.c,v 1.582 2023/01/06 02:39:59 djm Exp $ */
+/* $OpenBSD: ssh.c,v 1.583 2023/01/13 02:58:20 dtucker Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -616,7 +616,7 @@ main(int ac, char **av)
        struct ssh *ssh = NULL;
        int i, r, opt, exit_status, use_syslog, direct, timeout_ms;
        int was_addr, config_test = 0, opt_terminated = 0, want_final_pass = 0;
-       char *p, *cp, *line, *argv0, *logfile, *host_arg;
+       char *p, *cp, *line, *argv0, *logfile;
        char cname[NI_MAXHOST], thishost[NI_MAXHOST];
        struct stat st;
        struct passwd *pw;
@@ -1083,7 +1083,7 @@ main(int ac, char **av)
        if (!host)
                usage();
 
-       host_arg = xstrdup(host);
+       options.host_arg = xstrdup(host);
 
 #ifdef WITH_OPENSSL
        OpenSSL_add_all_algorithms();
@@ -1136,7 +1136,7 @@ main(int ac, char **av)
                logit("%s, %s", SSH_VERSION, SSH_OPENSSL_VERSION);
 
        /* Parse the configuration files */
-       process_config_files(host_arg, pw, 0, &want_final_pass);
+       process_config_files(options.host_arg, pw, 0, &want_final_pass);
        if (want_final_pass)
                debug("configuration requests final Match pass");
 
@@ -1205,7 +1205,7 @@ main(int ac, char **av)
                debug("re-parsing configuration");
                free(options.hostname);
                options.hostname = xstrdup(host);
-               process_config_files(host_arg, pw, 1, NULL);
+               process_config_files(options.host_arg, pw, 1, NULL);
                /*
                 * Address resolution happens early with canonicalisation
                 * enabled and the port number may have changed since, so
@@ -1358,10 +1358,10 @@ main(int ac, char **av)
        xasprintf(&cinfo->uidstr, "%llu",
            (unsigned long long)pw->pw_uid);
        cinfo->keyalias = xstrdup(options.host_key_alias ?
-           options.host_key_alias : host_arg);
+           options.host_key_alias : options.host_arg);
        cinfo->conn_hash_hex = ssh_connection_hash(cinfo->thishost, host,
            cinfo->portstr, options.user);
-       cinfo->host_arg = xstrdup(host_arg);
+       cinfo->host_arg = xstrdup(options.host_arg);
        cinfo->remhost = xstrdup(host);
        cinfo->remuser = xstrdup(options.user);
        cinfo->homedir = xstrdup(pw->pw_dir);
@@ -1538,8 +1538,8 @@ main(int ac, char **av)
                timeout_ms = options.connection_timeout * 1000;
 
        /* Open a connection to the remote host. */
-       if (ssh_connect(ssh, host, host_arg, addrs, &hostaddr, options.port,
-           options.connection_attempts,
+       if (ssh_connect(ssh, host, options.host_arg, addrs, &hostaddr,
+           options.port, options.connection_attempts,
            &timeout_ms, options.tcp_keep_alive) != 0)
                exit(255);