upstream commit

IdentityAgent for specifying specific agent sockets; ok
 djm@

Upstream-ID: 3e6a15eb89ea0fd406f108826b7dc7dec4fbfac1
This commit is contained in:
markus@openbsd.org 2016-05-04 12:21:53 +00:00 committed by Darren Tucker
parent 910e59bba0
commit b02ad1ce91
5 changed files with 58 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: readconf.c,v 1.252 2016/04/15 00:30:19 djm Exp $ */ /* $OpenBSD: readconf.c,v 1.253 2016/05/04 12:21:53 markus 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
@ -147,7 +147,7 @@ typedef enum {
oPasswordAuthentication, oRSAAuthentication, oPasswordAuthentication, oRSAAuthentication,
oChallengeResponseAuthentication, oXAuthLocation, oChallengeResponseAuthentication, oXAuthLocation,
oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward, oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward,
oCertificateFile, oAddKeysToAgent, oCertificateFile, oAddKeysToAgent, oIdentityAgent,
oUser, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand, oUser, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand,
oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts, oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts,
oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression, oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression,
@ -217,6 +217,7 @@ static struct {
{ "identitiesonly", oIdentitiesOnly }, { "identitiesonly", oIdentitiesOnly },
{ "certificatefile", oCertificateFile }, { "certificatefile", oCertificateFile },
{ "addkeystoagent", oAddKeysToAgent }, { "addkeystoagent", oAddKeysToAgent },
{ "identityagent", oIdentityAgent },
{ "hostname", oHostName }, { "hostname", oHostName },
{ "hostkeyalias", oHostKeyAlias }, { "hostkeyalias", oHostKeyAlias },
{ "proxycommand", oProxyCommand }, { "proxycommand", oProxyCommand },
@ -1636,6 +1637,10 @@ parse_keytypes:
multistate_ptr = multistate_yesnoaskconfirm; multistate_ptr = multistate_yesnoaskconfirm;
goto parse_multistate; goto parse_multistate;
case oIdentityAgent:
charptr = &options->identity_agent;
goto parse_string;
case oDeprecated: case oDeprecated:
debug("%s line %d: Deprecated option \"%s\"", debug("%s line %d: Deprecated option \"%s\"",
filename, linenum, keyword); filename, linenum, keyword);
@ -1814,6 +1819,7 @@ initialize_options(Options * options)
options->local_command = NULL; options->local_command = NULL;
options->permit_local_command = -1; options->permit_local_command = -1;
options->add_keys_to_agent = -1; options->add_keys_to_agent = -1;
options->identity_agent = NULL;
options->visual_host_key = -1; options->visual_host_key = -1;
options->ip_qos_interactive = -1; options->ip_qos_interactive = -1;
options->ip_qos_bulk = -1; options->ip_qos_bulk = -1;
@ -2463,6 +2469,7 @@ dump_client_config(Options *o, const char *host)
dump_cfg_string(oHostKeyAlgorithms, o->hostkeyalgorithms); dump_cfg_string(oHostKeyAlgorithms, o->hostkeyalgorithms);
dump_cfg_string(oHostKeyAlias, o->host_key_alias); dump_cfg_string(oHostKeyAlias, o->host_key_alias);
dump_cfg_string(oHostbasedKeyTypes, o->hostbased_key_types); dump_cfg_string(oHostbasedKeyTypes, o->hostbased_key_types);
dump_cfg_string(oIdentityAgent, o->identity_agent);
dump_cfg_string(oKbdInteractiveDevices, o->kbd_interactive_devices); dump_cfg_string(oKbdInteractiveDevices, o->kbd_interactive_devices);
dump_cfg_string(oKexAlgorithms, o->kex_algorithms ? o->kex_algorithms : KEX_CLIENT_KEX); dump_cfg_string(oKexAlgorithms, o->kex_algorithms ? o->kex_algorithms : KEX_CLIENT_KEX);
dump_cfg_string(oLocalCommand, o->local_command); dump_cfg_string(oLocalCommand, o->local_command);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: readconf.h,v 1.114 2016/04/15 00:30:19 djm Exp $ */ /* $OpenBSD: readconf.h,v 1.115 2016/05/04 12:21:53 markus Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
@ -101,6 +101,7 @@ typedef struct {
struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES];
int add_keys_to_agent; int add_keys_to_agent;
char *identity_agent; /* Optional path to ssh-agent socket */
/* Local TCP/IP forward requests. */ /* Local TCP/IP forward requests. */
int num_local_forwards; int num_local_forwards;

5
ssh.1
View File

@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: ssh.1,v 1.370 2016/04/15 00:30:19 djm Exp $ .\" $OpenBSD: ssh.1,v 1.371 2016/05/04 12:21:53 markus Exp $
.Dd $Mdocdate: April 15 2016 $ .Dd $Mdocdate: May 4 2016 $
.Dt SSH 1 .Dt SSH 1
.Os .Os
.Sh NAME .Sh NAME
@ -501,6 +501,7 @@ For full details of the options listed below, and their possible values, see
.It HostKeyAlgorithms .It HostKeyAlgorithms
.It HostKeyAlias .It HostKeyAlias
.It HostName .It HostName
.It IdentityAgent
.It IdentityFile .It IdentityFile
.It IdentitiesOnly .It IdentitiesOnly
.It Include .It Include

18
ssh.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: ssh.c,v 1.438 2016/04/29 08:07:53 djm Exp $ */ /* $OpenBSD: ssh.c,v 1.439 2016/05/04 12:21:53 markus 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
@ -1335,6 +1335,22 @@ main(int ac, char **av)
/* load options.identity_files */ /* load options.identity_files */
load_public_identity_files(); load_public_identity_files();
/* optionally set the SSH_AUTHSOCKET_ENV_NAME varibale */
if (options.identity_agent) {
if (strcmp(options.identity_agent, "none") == 0) {
unsetenv(SSH_AUTHSOCKET_ENV_NAME);
} else {
p = tilde_expand_filename(options.identity_agent,
original_real_uid);
cp = percent_expand(p, "d", pw->pw_dir,
"u", pw->pw_name, "l", thishost, "h", host,
"r", options.user, (char *)NULL);
setenv(SSH_AUTHSOCKET_ENV_NAME, cp, 1);
free(cp);
free(p);
}
}
/* Expand ~ in known host file names. */ /* Expand ~ in known host file names. */
tilde_expand_paths(options.system_hostfiles, tilde_expand_paths(options.system_hostfiles,
options.num_system_hostfiles); options.num_system_hostfiles);

View File

@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: ssh_config.5,v 1.230 2016/04/17 14:34:46 jmc Exp $ .\" $OpenBSD: ssh_config.5,v 1.231 2016/05/04 12:21:53 markus Exp $
.Dd $Mdocdate: April 17 2016 $ .Dd $Mdocdate: May 4 2016 $
.Dt SSH_CONFIG 5 .Dt SSH_CONFIG 5
.Os .Os
.Sh NAME .Sh NAME
@ -952,6 +952,31 @@ This option is intended for situations where ssh-agent
offers many different identities. offers many different identities.
The default is The default is
.Dq no . .Dq no .
.It Cm IdentityAgent
Specifies the
.Ux Ns -domain
socket used to communicate with the authentication agent.
.Pp
This option overrides the
.Dq SSH_AUTH_SOCK
environment variable and can be used to select a specific agent.
Setting the socket name to
.Dq none
disables the use of an authentication agent.
.Pp
The socket name may use the tilde
syntax to refer to a user's home directory or one of the following
escape characters:
.Ql %d
(local user's home directory),
.Ql %u
(local user name),
.Ql %l
(local host name),
.Ql %h
(remote host name) or
.Ql %r
(remote user name).
.It Cm IdentityFile .It Cm IdentityFile
Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication
identity is read. identity is read.