ssh-add adds private key identities to the authentication agent, ssh-agent(1). When run without
arguments, it adds the files ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519 and
~/.ssh/id_ed25519_sk. After loading a private key, ssh-add will try to load corresponding certificate
information from the filename obtained by appending -cert.pub to the name of the private key file.
Alternative file names can be given on the command line.
If any file requires a passphrase, ssh-add asks for the passphrase from the user. The passphrase is read
from the user's tty. ssh-add retries the last passphrase if multiple identity files are given.
The authentication agent must be running and the SSH_AUTH_SOCK environment variable must contain the name
of its socket for ssh-add to work.
The options are as follows:
-C When loading keys into or deleting keys from the agent, process certificates only and skip plain
keys.
-c Indicates that added identities should be subject to confirmation before being used for
authentication. Confirmation is performed by ssh-askpass(1). Successful confirmation is
signaled by a zero exit status from ssh-askpass(1), rather than text entered into the requester.
-D Deletes all identities from the agent.
-d Instead of adding identities, removes identities from the agent. If ssh-add has been run without
arguments, the keys for the default identities and their corresponding certificates will be
removed. Otherwise, the argument list will be interpreted as a list of paths to public key files
to specify keys and certificates to be removed from the agent. If no public key is found at a
given path, ssh-add will append .pub and retry. If the argument list consists of “-” then
ssh-add will read public keys to be removed from standard input.
-Efingerprint_hash
Specifies the hash algorithm used when displaying key fingerprints. Valid options are: “md5” and
“sha256”. The default is “sha256”.
-epkcs11
Remove keys provided by the PKCS#11 shared library pkcs11.
-Hhostkey_file
Specifies a known hosts file to look up hostkeys when using destination-constrained keys via the
-h flag. This option may be specified multiple times to allow multiple files to be searched. If
no files are specified, ssh-add will use the default ssh_config(5) known hosts files:
~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts, and /etc/ssh/ssh_known_hosts2.
-hdestination_constraint
When adding keys, constrain them to be usable only through specific hosts or to specific
destinations.
Destination constraints of the form ‘[user@]dest-hostname’ permit use of the key only from the
origin host (the one running ssh-agent(1)) to the listed destination host, with optional user
name.
Constraints of the form ‘src-hostname>[user@]dst-hostname’ allow a key available on a forwarded
ssh-agent(1) to be used through a particular host (as specified by ‘src-hostname’) to
authenticate to a further host, specified by ‘dst-hostname’.
Multiple destination constraints may be added when loading keys. When attempting authentication
with a key that has destination constraints, the whole connection path, including ssh-agent(1)
forwarding, is tested against those constraints and each hop must be permitted for the attempt to
succeed. For example, if key is forwarded to a remote host, ‘host-b’, and is attempting
authentication to another host, ‘host-c’, then the operation will be successful only if ‘host-b’
was permitted from the origin host and the subsequent ‘host-b>host-c’ hop is also permitted by
destination constraints.
Hosts are identified by their host keys, and are looked up from known hosts files by ssh-add.
Wildcards patterns may be used for hostnames and certificate host keys are supported. By
default, keys added by ssh-add are not destination constrained.
Destination constraints were added in OpenSSH release 8.9. Support in both the remote SSH client
and server is required when using destination-constrained keys over a forwarded ssh-agent(1)
channel.
It is also important to note that destination constraints can only be enforced by ssh-agent(1)
when a key is used, or when it is forwarded by a cooperatingssh(1). Specifically, it does not
prevent an attacker with access to a remote SSH_AUTH_SOCK from forwarding it again and using it
on a different host (but only to a permitted destination).
-K Load resident keys from a FIDO authenticator.
-k When loading keys into or deleting keys from the agent, process plain private keys only and skip
certificates.
-L Lists public key parameters of all identities currently represented by the agent.
-l Lists fingerprints of all identities currently represented by the agent.
-q Be quiet after a successful operation.
-Sprovider
Specifies a path to a library that will be used when adding FIDO authenticator-hosted keys,
overriding the default of using the internal USB HID support.
-spkcs11
Add keys provided by the PKCS#11 shared library pkcs11. Certificate files may optionally be
listed as command-line arguments. If these are present, then they will be loaded into the agent
using any corresponding private keys loaded from the PKCS#11 token.
-Tpubkey...
Tests whether the private keys that correspond to the specified pubkey files are usable by
performing sign and verify operations on each.
-tlife
Set a maximum lifetime when adding identities to an agent. The lifetime may be specified in
seconds or in a time format specified in sshd_config(5).
-v Verbose mode. Causes ssh-add to print debugging messages about its progress. This is helpful in
debugging problems. Multiple -v options increase the verbosity. The maximum is 3.
-X Unlock the agent.
-x Lock the agent with a password.