##
##  ssh-keyman -- authentication key agent management
##  Copyright (c) 2002 Ralf S. Engelschall <rse@engelschall.com>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS 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.
##
##  ssh-keyman.pod: Unix manual page (language: POD)
##

=pod

=head1 NAME

B<ssh-keyman> - authentication key agent management

=head1 SYNOPSIS

B<ssh-keyman> 
[B<-q>] 
[B<-c>] 
[B<-k>]
[B<-s>]
[B<-e>] 
[B<-d>]
[B<-a>]
[B<-l>]
[I<keyfile> ...]

B<ssh-keyman> 
B<-h>
B<-v>

=head1 DESCRIPTION

B<ssh-keyman> is a frontend to the B<ssh-agent> and B<ssh-add> commands
for managing a long-running B<ssh-agent> process. The idea is that
a single B<ssh-agent> process is kept persistently running across
multiple user login sessions in order to prevent the startup of multiple
B<ssh-agent> processes and to avoid having to enter pass-phrases more
often than really necessary from a security point of view.

The command line options can be combined and are executed internally in
the given order below.

=over 4

=item B<-q>, B<--quiet>

Quiet operation. Do not print verbose messages.

=item B<-c>, B<--cluster>

Cluster indicator. This forces the use of
B<$HOME/.ssh/agent->I<hostname> as the agent attachment informations
file instead of the default B<$HOME/.ssh/agent>. Use this if your home
directory is NFS-mounted on a cluster of desktops.

=item B<-k>, B<--kill>

Kill agent. This makes sure the B<ssh-agent> process
is no longer running.

=item B<-s>, B<--start>

Start agent. This makes sure the B<ssh-agent> process is
running. If not, it automatically spawns a new one.

=item B<-e>, B<--env>

Environment setup. This outputs to F<stdout> the Bourne-Shell commands
necessary to attach the current shell session to the B<ssh-agent>
process. The intended usage is "C<eval `B<ssh-keyman> -q -e -s`>" from
within B<$HOME/.xsession> or B<$HOME/.bash_login> scripts.

=item B<-d>, B<--delete>

Delete key. This deletes one or more (or all if not I<keyfile> arguments
are specified at all) from the B<ssh-agent> process.

=item B<-a>, B<--add>

Add key. This adds one or more keys (in I<keyfile>) to the B<ssh-agent>
process. If a key is already loaded, it is skipped and not reloaded.
Additionally, all specified keys are loaded with a single B<ssh-add>
call. This way the pass-phrase dialog is reduced to its possible
minimum.

=item B<-l>, B<--list>

List keys. This lists the currently available keys in the B<ssh-agent>
process.

=item B<-h>, B<--help>

Help information. Display a usage summary on F<stdout>.

=item B<-v>, B<--version>

Version information. Display a version summary on F<stdout>.

=back

=head1 EXAMPLE

F<.xsession>:

 eval `ssh-keyman -q -s -e`
 ssh-keyman -q -a </dev/null \
     ~/.ssh/id_rsa_1 \
     ~/.ssh/id_rsa_2 \
     ~/.ssh/id_rsa_3

F<.bash_login>:
 
 eval `ssh-keyman -q -s -e`

=head1 FILES

=over 4

=item B<$HOME/.ssh/agent>

The generated shell script for attaching the current shell
session (and all of its sub-processes) to the B<ssh-agent> process.
At any time this can be directly sourced from within the shell session
or indirectly through the B<ssh-keyman> B<-e> option.
This file is used if the cluster option B<-c> is not used.

=item B<$HOME/.ssh/agent->I<hostname>

The generated shell script for attaching the current shell
session (and all of its sub-processes) to the B<ssh-agent> process.
At any time this can be directly sourced from within the shell session
or indirectly through the B<ssh-keyman> B<-e> option.
This file is used if the cluster option B<-c> is used.

=back

=head1 SEE ALSO

B<ssh-agent>(1), B<ssh-add>(1).

=head1 HISTORY

B<ssh-keyman> was written in May 2002 by Ralf S. Engelschall
E<lt>rse@engelschall.comE<gt>. It was inspired by the similar program
B<keychain> from Daniel Robbins E<lt>drobbins@gentoo.orgE<gt>. The main
difference between B<keychain> and B<ssh-keyman> is that B<ssh-keyman>
uses a more orthogonal interface which even allows you to combine
multiple actions into a single call.

=cut

