123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- .\" $OpenBSD: ssh-agent.1,v 1.72 2020/06/22 05:52:05 djm Exp $
- .\"
- .\" Author: Tatu Ylonen <ylo@cs.hut.fi>
- .\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
- .\" All rights reserved
- .\"
- .\" 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".
- .\"
- .\" 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.
- .\"
- .\" 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.
- .\"
- .Dd $Mdocdate: June 22 2020 $
- .Dt SSH-AGENT 1
- .Os
- .Sh NAME
- .Nm ssh-agent
- .Nd OpenSSH authentication agent
- .Sh SYNOPSIS
- .Nm ssh-agent
- .Op Fl c | s
- .Op Fl \&Dd
- .Op Fl a Ar bind_address
- .Op Fl E Ar fingerprint_hash
- .Op Fl P Ar allowed_providers
- .Op Fl t Ar life
- .Nm ssh-agent
- .Op Fl a Ar bind_address
- .Op Fl E Ar fingerprint_hash
- .Op Fl P Ar allowed_providers
- .Op Fl t Ar life
- .Ar command Op Ar arg ...
- .Nm ssh-agent
- .Op Fl c | s
- .Fl k
- .Sh DESCRIPTION
- .Nm
- is a program to hold private keys used for public key authentication.
- Through use of environment variables the agent can be located
- and automatically used for authentication when logging in to other
- machines using
- .Xr ssh 1 .
- .Pp
- The options are as follows:
- .Bl -tag -width Ds
- .It Fl a Ar bind_address
- Bind the agent to the
- .Ux Ns -domain
- socket
- .Ar bind_address .
- The default is
- .Pa $TMPDIR/ssh-XXXXXXXXXX/agent.\*(Ltppid\*(Gt .
- .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.
- .It Fl D
- Foreground mode.
- When this option is specified
- .Nm
- will not fork.
- .It Fl d
- Debug mode.
- When this option is specified
- .Nm
- will not fork and will write debug information to standard error.
- .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 .
- .It Fl k
- Kill the current agent (given by the
- .Ev SSH_AGENT_PID
- environment variable).
- .It Fl P Ar allowed_providers
- Specify a pattern-list of acceptable paths for PKCS#11 provider and FIDO
- authenticator middleware shared libraries that may be used with the
- .Fl S
- or
- .Fl s
- options to
- .Xr ssh-add 1 .
- Libraries that do not match the pattern list will be refused.
- See PATTERNS in
- .Xr ssh_config 5
- for a description of pattern-list syntax.
- The default list is
- .Dq /usr/lib/*,/usr/local/lib/* .
- .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.
- .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
- .Xr sshd_config 5 .
- A lifetime specified for an identity with
- .Xr ssh-add 1
- overrides this value.
- Without this option the default maximum lifetime is forever.
- .It Ar command Op Ar arg ...
- If a command (and optional arguments) is given,
- this is executed as a subprocess of the agent.
- The agent exits automatically when the command given on the command
- line terminates.
- .El
- .Pp
- There are two main ways to get an agent set up.
- The first is at the start of an X session,
- where all other windows or programs are started as children of the
- .Nm
- program.
- The agent starts a command under which its environment
- variables are exported, for example
- .Cm ssh-agent xterm & .
- When the command terminates, so does the agent.
- .Pp
- The second method is used for a login session.
- When
- .Nm
- is started,
- it prints the shell commands required to set its environment variables,
- which in turn can be evaluated in the calling shell, for example
- .Cm eval `ssh-agent -s` .
- .Pp
- In both cases,
- .Xr ssh 1
- looks at these environment variables and uses them to establish a connection to the agent.
- .Pp
- The agent initially does not have any private keys.
- Keys are added using
- .Xr ssh-add 1
- or by
- .Xr ssh 1
- when
- .Cm AddKeysToAgent
- is set in
- .Xr ssh_config 5 .
- 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
- Connections to
- .Nm
- may be forwarded from further remote hosts using the
- .Fl A
- option to
- .Xr ssh 1
- (but see the caveats documented therein),
- avoiding the need for authentication data to be stored on other machines.
- Authentication passphrases and private keys never go over the network:
- the connection to the agent is forwarded over SSH remote connections
- and the result is returned to the requester,
- allowing the user access to their identities anywhere in the network
- in a secure fashion.
- .Sh ENVIRONMENT
- .Bl -tag -width "SSH_AGENT_PID"
- .It Ev SSH_AGENT_PID
- When
- .Nm
- starts, it stores the name of the agent's process ID (PID) in this variable.
- .It Ev SSH_AUTH_SOCK
- When
- .Nm
- starts, it creates a
- .Ux Ns -domain
- socket and stores its pathname in this variable.
- It is accessible only to the current user,
- but is easily abused by root or another instance of the same user.
- .El
- .Pp
- In Debian,
- .Nm
- is installed with the set-group-id bit set, to prevent
- .Xr ptrace 2
- attacks retrieving private key material.
- This has the side-effect of causing the run-time linker to remove certain
- environment variables which might have security implications for set-id
- programs, including
- .Ev LD_PRELOAD ,
- .Ev LD_LIBRARY_PATH ,
- and
- .Ev TMPDIR .
- If you need to set any of these environment variables, you will need to do
- so in the program executed by ssh-agent.
- .Sh FILES
- .Bl -tag -width Ds
- .It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
- .Ux Ns -domain
- sockets used to contain the connection to the authentication agent.
- These sockets should only be readable by the owner.
- The sockets should get automatically removed when the agent exits.
- .El
- .Sh SEE ALSO
- .Xr ssh 1 ,
- .Xr ssh-add 1 ,
- .Xr ssh-keygen 1 ,
- .Xr ssh_config 5 ,
- .Xr sshd 8
- .Sh AUTHORS
- .An -nosplit
- OpenSSH is a derivative of the original and free ssh 1.2.12 release by
- .An Tatu Ylonen .
- .An Aaron Campbell , Bob Beck , Markus Friedl , Niels Provos , Theo de Raadt
- and
- .An Dug Song
- removed many bugs, re-added newer features and created OpenSSH.
- .An Markus Friedl
- contributed the support for SSH protocol versions 1.5 and 2.0.
|