upstream: Add a "Host" line to the output of ssh -G showing the

original host arg. Inspired by patch from vincent at bernat.ch via bz#3343,
ok djm@

OpenBSD-Commit-ID: 59c0f60a222113a44d0650cd394376e3beecc883
This commit is contained in:
dtucker@openbsd.org 2023-01-13 02:58:20 +00:00 committed by Darren Tucker
parent f673b49f3b
commit 41f36dd896
No known key found for this signature in database
3 changed files with 14 additions and 11 deletions

View 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> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -2327,6 +2327,7 @@ void
initialize_options(Options * options) initialize_options(Options * options)
{ {
memset(options, 'X', sizeof(*options)); memset(options, 'X', sizeof(*options));
options->host_arg = NULL;
options->forward_agent = -1; options->forward_agent = -1;
options->forward_agent_sock_path = NULL; options->forward_agent_sock_path = NULL;
options->forward_x11 = -1; options->forward_x11 = -1;
@ -3278,6 +3279,7 @@ dump_client_config(Options *o, const char *host)
free(all_key); free(all_key);
/* Most interesting options first: user, host, port */ /* Most interesting options first: user, host, port */
dump_cfg_string(oHost, o->host_arg);
dump_cfg_string(oUser, o->user); dump_cfg_string(oUser, o->user);
dump_cfg_string(oHostname, host); dump_cfg_string(oHostname, host);
dump_cfg_int(oPort, o->port); dump_cfg_int(oPort, o->port);

View 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> * Author: Tatu Ylonen <ylo@cs.hut.fi>
@ -28,6 +28,7 @@ struct allowed_cname {
}; };
typedef struct { typedef struct {
char *host_arg; /* Host arg as specified on command line. */
int forward_agent; /* Forward authentication agent. */ int forward_agent; /* Forward authentication agent. */
char *forward_agent_sock_path; /* Optional path of the agent. */ char *forward_agent_sock_path; /* Optional path of the agent. */
int forward_x11; /* Forward X11 display. */ int forward_x11; /* Forward X11 display. */

18
ssh.c
View 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> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -632,7 +632,7 @@ main(int ac, char **av)
struct ssh *ssh = NULL; struct ssh *ssh = NULL;
int i, r, opt, exit_status, use_syslog, direct, timeout_ms; int i, r, opt, exit_status, use_syslog, direct, timeout_ms;
int was_addr, config_test = 0, opt_terminated = 0, want_final_pass = 0; 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]; char cname[NI_MAXHOST], thishost[NI_MAXHOST];
struct stat st; struct stat st;
struct passwd *pw; struct passwd *pw;
@ -1109,7 +1109,7 @@ main(int ac, char **av)
if (!host) if (!host)
usage(); usage();
host_arg = xstrdup(host); options.host_arg = xstrdup(host);
/* Initialize the command to execute on remote host. */ /* Initialize the command to execute on remote host. */
if ((command = sshbuf_new()) == NULL) if ((command = sshbuf_new()) == NULL)
@ -1157,7 +1157,7 @@ main(int ac, char **av)
logit("%s, %s", SSH_RELEASE, SSH_OPENSSL_VERSION); logit("%s, %s", SSH_RELEASE, SSH_OPENSSL_VERSION);
/* Parse the configuration files */ /* 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) if (want_final_pass)
debug("configuration requests final Match pass"); debug("configuration requests final Match pass");
@ -1226,7 +1226,7 @@ main(int ac, char **av)
debug("re-parsing configuration"); debug("re-parsing configuration");
free(options.hostname); free(options.hostname);
options.hostname = xstrdup(host); 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 * Address resolution happens early with canonicalisation
* enabled and the port number may have changed since, so * enabled and the port number may have changed since, so
@ -1379,10 +1379,10 @@ main(int ac, char **av)
xasprintf(&cinfo->uidstr, "%llu", xasprintf(&cinfo->uidstr, "%llu",
(unsigned long long)pw->pw_uid); (unsigned long long)pw->pw_uid);
cinfo->keyalias = xstrdup(options.host_key_alias ? 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->conn_hash_hex = ssh_connection_hash(cinfo->thishost, host,
cinfo->portstr, options.user); cinfo->portstr, options.user);
cinfo->host_arg = xstrdup(host_arg); cinfo->host_arg = xstrdup(options.host_arg);
cinfo->remhost = xstrdup(host); cinfo->remhost = xstrdup(host);
cinfo->remuser = xstrdup(options.user); cinfo->remuser = xstrdup(options.user);
cinfo->homedir = xstrdup(pw->pw_dir); cinfo->homedir = xstrdup(pw->pw_dir);
@ -1559,8 +1559,8 @@ main(int ac, char **av)
timeout_ms = options.connection_timeout * 1000; timeout_ms = options.connection_timeout * 1000;
/* Open a connection to the remote host. */ /* Open a connection to the remote host. */
if (ssh_connect(ssh, host, host_arg, addrs, &hostaddr, options.port, if (ssh_connect(ssh, host, options.host_arg, addrs, &hostaddr,
options.connection_attempts, options.port, options.connection_attempts,
&timeout_ms, options.tcp_keep_alive) != 0) &timeout_ms, options.tcp_keep_alive) != 0)
exit(255); exit(255);