2017-01-31 12:29:48 +00:00
|
|
|
.\" $OpenBSD: ssh-agent.1,v 1.62 2015/11/15 23:54:15 jmc Exp $
|
2009-10-01 17:12:52 +00:00
|
|
|
.\" $FreeBSD$
|
2000-02-24 14:29:47 +00:00
|
|
|
.\"
|
|
|
|
.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
|
|
|
|
.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
|
|
|
.\" All rights reserved
|
|
|
|
.\"
|
2000-09-10 08:31:17 +00:00
|
|
|
.\" As far as I am concerned, the code I have written for this software
|
|
|
|
.\" can be used freely for any purpose. Any derived versions of this
|
|
|
|
.\" software must be clearly marked as such, and if the derived work is
|
|
|
|
.\" incompatible with the protocol description in the RFC file, it must be
|
|
|
|
.\" called by a name other than "ssh" or "Secure Shell".
|
|
|
|
.\"
|
2001-05-04 03:57:05 +00:00
|
|
|
.\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved.
|
|
|
|
.\" Copyright (c) 1999 Aaron Campbell. All rights reserved.
|
|
|
|
.\" Copyright (c) 1999 Theo de Raadt. All rights reserved.
|
2000-09-10 08:31:17 +00:00
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
2000-02-24 14:29:47 +00:00
|
|
|
.\"
|
2016-03-10 20:10:25 +00:00
|
|
|
.Dd $Mdocdate: November 15 2015 $
|
2000-02-24 14:29:47 +00:00
|
|
|
.Dt SSH-AGENT 1
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm ssh-agent
|
|
|
|
.Nd authentication agent
|
|
|
|
.Sh SYNOPSIS
|
2000-05-15 04:37:24 +00:00
|
|
|
.Nm ssh-agent
|
2011-02-17 11:47:40 +00:00
|
|
|
.Op Fl c | s
|
2016-03-11 00:15:29 +00:00
|
|
|
.Op Fl \&Ddx
|
2008-07-23 09:28:49 +00:00
|
|
|
.Op Fl a Ar bind_address
|
2015-07-02 13:15:34 +00:00
|
|
|
.Op Fl E Ar fingerprint_hash
|
2008-07-23 09:28:49 +00:00
|
|
|
.Op Fl t Ar life
|
|
|
|
.Op Ar command Op Ar arg ...
|
2001-05-04 03:57:05 +00:00
|
|
|
.Nm ssh-agent
|
2011-02-17 11:47:40 +00:00
|
|
|
.Op Fl c | s
|
2001-05-04 03:57:05 +00:00
|
|
|
.Fl k
|
2000-05-15 04:37:24 +00:00
|
|
|
.Sh DESCRIPTION
|
2000-02-24 14:29:47 +00:00
|
|
|
.Nm
|
2000-09-10 08:31:17 +00:00
|
|
|
is a program to hold private keys used for public key authentication
|
2015-07-02 13:15:34 +00:00
|
|
|
(RSA, DSA, ECDSA, Ed25519).
|
2000-02-24 14:29:47 +00:00
|
|
|
.Nm
|
2015-01-05 16:09:55 +00:00
|
|
|
is usually started in the beginning of an X-session or a login session, and
|
2000-02-24 14:29:47 +00:00
|
|
|
all other windows or programs are started as clients to the ssh-agent
|
2000-03-26 07:07:24 +00:00
|
|
|
program.
|
|
|
|
Through use of environment variables the agent can be located
|
2000-09-10 08:31:17 +00:00
|
|
|
and automatically used for authentication when logging in to other
|
2000-02-24 14:29:47 +00:00
|
|
|
machines using
|
|
|
|
.Xr ssh 1 .
|
|
|
|
.Pp
|
2015-01-05 16:09:55 +00:00
|
|
|
The agent initially does not have any private keys.
|
|
|
|
Keys are added using
|
2016-03-10 20:10:25 +00:00
|
|
|
.Xr ssh 1
|
|
|
|
(see
|
|
|
|
.Cm AddKeysToAgent
|
|
|
|
in
|
|
|
|
.Xr ssh_config 5
|
|
|
|
for details)
|
|
|
|
or
|
2015-01-05 16:09:55 +00:00
|
|
|
.Xr ssh-add 1 .
|
|
|
|
Multiple identities may be stored in
|
|
|
|
.Nm
|
|
|
|
concurrently and
|
|
|
|
.Xr ssh 1
|
|
|
|
will automatically use them if present.
|
|
|
|
.Xr ssh-add 1
|
|
|
|
is also used to remove keys from
|
|
|
|
.Nm
|
|
|
|
and to query the keys that are held in one.
|
|
|
|
.Pp
|
2000-02-24 14:29:47 +00:00
|
|
|
The options are as follows:
|
|
|
|
.Bl -tag -width Ds
|
2002-06-23 14:01:54 +00:00
|
|
|
.It Fl a Ar bind_address
|
2010-03-08 11:19:52 +00:00
|
|
|
Bind the agent to the
|
|
|
|
.Ux Ns -domain
|
|
|
|
socket
|
2002-06-23 14:01:54 +00:00
|
|
|
.Ar bind_address .
|
|
|
|
The default is
|
2011-02-17 11:47:40 +00:00
|
|
|
.Pa $TMPDIR/ssh-XXXXXXXXXX/agent.\*(Ltppid\*(Gt .
|
2000-02-24 14:29:47 +00:00
|
|
|
.It Fl c
|
|
|
|
Generate C-shell commands on
|
|
|
|
.Dv stdout .
|
|
|
|
This is the default if
|
|
|
|
.Ev SHELL
|
|
|
|
looks like it's a csh style of shell.
|
2015-07-02 13:18:50 +00:00
|
|
|
.It Fl D
|
|
|
|
Foreground mode.
|
|
|
|
When this option is specified
|
|
|
|
.Nm
|
|
|
|
will not fork.
|
2008-07-23 09:28:49 +00:00
|
|
|
.It Fl d
|
|
|
|
Debug mode.
|
|
|
|
When this option is specified
|
|
|
|
.Nm
|
2015-07-02 13:18:50 +00:00
|
|
|
will not fork and will write debug information to standard error.
|
2015-07-02 13:15:34 +00:00
|
|
|
.It Fl E Ar fingerprint_hash
|
|
|
|
Specifies the hash algorithm used when displaying key fingerprints.
|
|
|
|
Valid options are:
|
|
|
|
.Dq md5
|
|
|
|
and
|
|
|
|
.Dq sha256 .
|
|
|
|
The default is
|
|
|
|
.Dq sha256 .
|
2008-07-23 09:28:49 +00:00
|
|
|
.It Fl k
|
|
|
|
Kill the current agent (given by the
|
|
|
|
.Ev SSH_AGENT_PID
|
|
|
|
environment variable).
|
2000-02-24 14:29:47 +00:00
|
|
|
.It Fl s
|
|
|
|
Generate Bourne shell commands on
|
|
|
|
.Dv stdout .
|
|
|
|
This is the default if
|
|
|
|
.Ev SHELL
|
|
|
|
does not look like it's a csh style of shell.
|
2003-04-23 16:53:02 +00:00
|
|
|
.It Fl t Ar life
|
|
|
|
Set a default value for the maximum lifetime of identities added to the agent.
|
|
|
|
The lifetime may be specified in seconds or in a time format specified in
|
2006-03-22 19:46:12 +00:00
|
|
|
.Xr sshd_config 5 .
|
2003-04-23 16:53:02 +00:00
|
|
|
A lifetime specified for an identity with
|
|
|
|
.Xr ssh-add 1
|
|
|
|
overrides this value.
|
|
|
|
Without this option the default maximum lifetime is forever.
|
2011-10-07 13:10:16 +00:00
|
|
|
.It Fl x
|
|
|
|
Exit after the last client has disconnected.
|
2000-02-24 14:29:47 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
2016-03-10 20:10:25 +00:00
|
|
|
If a command line is given, this is executed as a subprocess of the agent.
|
2000-02-24 14:29:47 +00:00
|
|
|
When the command dies, so does the agent.
|
|
|
|
.Pp
|
|
|
|
The idea is that the agent is run in the user's local PC, laptop, or
|
2000-03-26 07:07:24 +00:00
|
|
|
terminal.
|
|
|
|
Authentication data need not be stored on any other
|
2000-02-24 14:29:47 +00:00
|
|
|
machine, and authentication passphrases never go over the network.
|
|
|
|
However, the connection to the agent is forwarded over SSH
|
|
|
|
remote logins, and the user can thus use the privileges given by the
|
|
|
|
identities anywhere in the network in a secure way.
|
|
|
|
.Pp
|
2004-01-07 11:10:17 +00:00
|
|
|
There are two main ways to get an agent set up:
|
2004-10-28 16:03:53 +00:00
|
|
|
The first is that the agent starts a new subcommand into which some environment
|
|
|
|
variables are exported, eg
|
|
|
|
.Cm ssh-agent xterm & .
|
|
|
|
The second is that the agent prints the needed shell commands (either
|
2000-02-24 14:29:47 +00:00
|
|
|
.Xr sh 1
|
|
|
|
or
|
|
|
|
.Xr csh 1
|
2009-10-01 15:19:37 +00:00
|
|
|
syntax can be generated) which can be evaluated in the calling shell, eg
|
2004-10-28 16:03:53 +00:00
|
|
|
.Cm eval `ssh-agent -s`
|
|
|
|
for Bourne-type shells such as
|
|
|
|
.Xr sh 1
|
|
|
|
or
|
|
|
|
.Xr ksh 1
|
|
|
|
and
|
|
|
|
.Cm eval `ssh-agent -c`
|
|
|
|
for
|
|
|
|
.Xr csh 1
|
|
|
|
and derivatives.
|
|
|
|
.Pp
|
2000-02-24 14:29:47 +00:00
|
|
|
Later
|
|
|
|
.Xr ssh 1
|
2001-05-04 03:57:05 +00:00
|
|
|
looks at these variables and uses them to establish a connection to the agent.
|
2000-02-24 14:29:47 +00:00
|
|
|
.Pp
|
2002-03-18 09:55:03 +00:00
|
|
|
The agent will never send a private key over its request channel.
|
|
|
|
Instead, operations that require a private key will be performed
|
|
|
|
by the agent, and the result will be returned to the requester.
|
|
|
|
This way, private keys are not exposed to clients using the agent.
|
|
|
|
.Pp
|
2010-03-08 11:19:52 +00:00
|
|
|
A
|
|
|
|
.Ux Ns -domain
|
|
|
|
socket is created and the name of this socket is stored in the
|
2000-02-24 14:29:47 +00:00
|
|
|
.Ev SSH_AUTH_SOCK
|
|
|
|
environment
|
2000-03-26 07:07:24 +00:00
|
|
|
variable.
|
|
|
|
The socket is made accessible only to the current user.
|
2000-02-24 14:29:47 +00:00
|
|
|
This method is easily abused by root or another instance of the same
|
|
|
|
user.
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Ev SSH_AGENT_PID
|
2002-06-29 11:34:13 +00:00
|
|
|
environment variable holds the agent's process ID.
|
2000-02-24 14:29:47 +00:00
|
|
|
.Pp
|
|
|
|
The agent exits automatically when the command given on the command
|
|
|
|
line terminates.
|
|
|
|
.Sh FILES
|
|
|
|
.Bl -tag -width Ds
|
2011-02-17 11:47:40 +00:00
|
|
|
.It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.\*(Ltppid\*(Gt
|
2010-03-08 11:19:52 +00:00
|
|
|
.Ux Ns -domain
|
|
|
|
sockets used to contain the connection to the authentication agent.
|
2000-03-26 07:07:24 +00:00
|
|
|
These sockets should only be readable by the owner.
|
|
|
|
The sockets should get automatically removed when the agent exits.
|
2000-09-10 08:31:17 +00:00
|
|
|
.El
|
2004-01-07 11:10:17 +00:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr ssh 1 ,
|
|
|
|
.Xr ssh-add 1 ,
|
|
|
|
.Xr ssh-keygen 1 ,
|
|
|
|
.Xr sshd 8
|
2001-05-04 03:57:05 +00:00
|
|
|
.Sh AUTHORS
|
|
|
|
OpenSSH is a derivative of the original and free
|
|
|
|
ssh 1.2.12 release by Tatu Ylonen.
|
|
|
|
Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
|
|
|
|
Theo de Raadt and Dug Song
|
|
|
|
removed many bugs, re-added newer features and
|
|
|
|
created OpenSSH.
|
|
|
|
Markus Friedl contributed the support for SSH
|
|
|
|
protocol versions 1.5 and 2.0.
|