SSH-AGENT(1)                General Commands Manual               SSH-AGENT(1)

NAME
     ssh-agent M-bM-^@M-^S authentication agent

SYNOPSIS
     ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]
               [-t life] [command [arg ...]]
     ssh-agent [-c | -s] -k

DESCRIPTION
     ssh-agent is a program to hold private keys used for public key
     authentication (RSA, DSA, ECDSA, Ed25519).  ssh-agent is usually started
     in the beginning of an X-session or a login session, and all other
     windows or programs are started as clients to the ssh-agent program.
     Through use of environment variables the agent can be located and
     automatically used for authentication when logging in to other machines
     using ssh(1).

     The agent initially does not have any private keys.  Keys are added using
     ssh-add(1).  Multiple identities may be stored in ssh-agent concurrently
     and ssh(1) will automatically use them if present.  ssh-add(1) is also
     used to remove keys from ssh-agent and to query the keys that are held in
     one.

     The options are as follows:

     -a bind_address
             Bind the agent to the UNIX-domain socket bind_address.  The
             default is $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>.

     -c      Generate C-shell commands on stdout.  This is the default if
             SHELL looks like it's a csh style of shell.

     -D      Foreground mode.  When this option is specified ssh-agent will
             not fork.

     -d      Debug mode.  When this option is specified ssh-agent will not
             fork and will write debug information to standard error.

     -E fingerprint_hash
             Specifies the hash algorithm used when displaying key
             fingerprints.  Valid options are: M-bM-^@M-^\md5M-bM-^@M-^] and M-bM-^@M-^\sha256M-bM-^@M-^].  The
             default is M-bM-^@M-^\sha256M-bM-^@M-^].

     -k      Kill the current agent (given by the SSH_AGENT_PID environment
             variable).

     -s      Generate Bourne shell commands on stdout.  This is the default if
             SHELL does not look like it's a csh style of shell.

     -t 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 sshd_config(5).  A lifetime specified
             for an identity with ssh-add(1) overrides this value.  Without
             this option the default maximum lifetime is forever.

     If a commandline is given, this is executed as a subprocess of the agent.
     When the command dies, so does the agent.

     The idea is that the agent is run in the user's local PC, laptop, or
     terminal.  Authentication data need not be stored on any other 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.

     There are two main ways to get an agent set up: The first is that the
     agent starts a new subcommand into which some environment variables are
     exported, eg ssh-agent xterm &.  The second is that the agent prints the
     needed shell commands (either sh(1) or csh(1) syntax can be generated)
     which can be evaluated in the calling shell, eg eval `ssh-agent -s` for
     Bourne-type shells such as sh(1) or ksh(1) and eval `ssh-agent -c` for
     csh(1) and derivatives.

     Later ssh(1) looks at these variables and uses them to establish a
     connection to the agent.

     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.

     A UNIX-domain socket is created and the name of this socket is stored in
     the SSH_AUTH_SOCK environment variable.  The socket is made accessible
     only to the current user.  This method is easily abused by root or
     another instance of the same user.

     The SSH_AGENT_PID environment variable holds the agent's process ID.

     The agent exits automatically when the command given on the command line
     terminates.

FILES
     $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
             UNIX-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.

SEE ALSO
     ssh(1), ssh-add(1), ssh-keygen(1), sshd(8)

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.

OpenBSD 5.8                     April 24, 2015                     OpenBSD 5.8
