ssh-agent — OpenSSH authentication agent

SYNOPSIS

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

DESCRIPTION

ssh-agent は、公開鍵認証に使用する秘密鍵を保持するためのプログラムである。環境変数を使用することで、ssh を使用して他のマシンにログインする際に、エージェントの場所を特定し、自動的に認証に使用することができる。

オプションは以下の通り:

-a bind_address
エージェントをUNIXドメインソケットbind_addressにバインドする。 デフォルトは $TMPDIR/ssh-XXXXXXXX/agent.<ppid> である。
-c
C-shellコマンドを標準出力に生成する。 SHELLがcshスタイルのシェルのように見える場合は、これがデフォルトである。
-D
フォアグラウンドモード。 このオプションが指定された場合、ssh-agent はフォークしない。
-d
デバッグモード。 このオプションが指定されると、ssh-agent はフォークせず、デバッグ情報を標準エラーに書き込む。
-E fingerprint_hash
鍵のfingerprintを表示する際に使用するハッシュアルゴリズムを指定する。 有効なオプションは "md5" および "sha256" である。 デフォルトは "sha256 "である。
-k
現在のエージェント (環境変数 SSH_AGENT_PID で指定される) を停止する。

-P allowed_providers

ssh-add-S または -s オプションで使用できる PKCS#11 プロバイダおよび FIDO 認証機ミドルウェア共有ライブラリの許容パスのパターンリストを指定する。 パターンリストに一致しないライブラリは拒否される。 パターンリストの構文については、ssh_config の「PATTERNS」を参照。 デフォルトのリストは、"/usr/lib/*,/usr/local/lib/*"である。
-s
Bourne シェルコマンドを標準出力に生成する。 SHELLがcshスタイルのシェルに見えない場合は、これがデフォルトである。
-t life
エージェントに追加される ID の最大有効期間の既定値を設定する。 有効期間は秒単位で指定するか、または sshd_config で指定された時間形式を使用する。 ssh-add を使用して ID に指定された有効期間は、この値より優先される。 このオプションを指定しない場合、既定の最大有効期間は「永久」である。
command [arg ...]
コマンド(およびオプションの引数)が与えられた場合、これはエージェントのサブプロセスとして実行される。 エージェントは、コマンドラインで与えられたコマンドが終了すると、自動的に終了する。
エージェントをセットアップする主な方法は2つある。 1つはXセッションの開始時で、他のすべてのウィンドウやプログラムはssh-agentプログラムの子として起動される。 エージェントは、例えば ssh-agent xterm & のように、環境変数がエクスポートされるコマンドを開始する。 コマンドが終了すると、エージェントも終了する。
2番目の方法は、ログインセッションに使用される。 ssh-agent が起動されると,環境変数を設定するために必要なシェルコマンドを表示する. そのシェルコマンドは,たとえば eval `ssh-agent -s` のように呼び出し側のシェルで評価することができる。
どちらの場合も、ssh はこれらの環境変数を見て、エージェントとの接続を確立するためにそれらを使用する。
エージェントは、最初は秘密鍵を持っていない。 鍵は ssh-add を使って追加されるか、 ssh_config で AddKeysToAgent が設定されているときに ssh によって追加される。 ssh-add はまた、ssh-agent から鍵を削除したり、ssh-agent に保持されている鍵を問い合わせたりするのにも使われる。
ssh-agent への接続は、ssh-A オプションを使って、さらにリモートホストから フォワーディングすることができる (ただし、その際の注意事項を参照すること)。 エージェントへの接続は SSH リモート接続で転送され、その結果が要求者に返される。 このため、ユーザはネットワーク上のどこにいても安全に自分の ID にアクセスすることができる。

ENVIRONMENT

SSH_AGENT_PID
ssh-agent が起動すると、この変数にエージェントのプロセス ID (PID) の名前が格納される。
SSH_AUTH_SOCK
ssh-agent が起動するとき、UNIX ドメインのソケットを作成し、そのパス名をこの変数に格納する。これは現在のユーザのみがアクセス可能であるが、rootや同じユーザの別のインスタンスによって簡単に悪用される。
Debian では、ssh-agent は set-group-id ビットをセットしてインストールされ、 ptrace(2) 攻撃による秘密鍵の取得を防いでいる。これは、LD_PRELOAD、LD_LIBRARY_PATH、TMPDIR などの set-id プログラムに対してセキュリティ上の影響を与える可能性のある環境変数を、 実行時Linkerが削除する副作用がある。これらの環境変数を設定する必要がある場合は、ssh-agent によって実行されるプロ グラムの中で設定する必要がある。

FILES

$TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
認証エージェントへの接続に使用される UNIX ドメインのソケットである。これらのソケットは、所有者だけが読むことができるようにしなければならない。ソケットは、エージェントが終了したときに自動的に削除される必要がある。

SEE ALSO

ssh, ssh-add, ssh-keygen, ssh_config, sshd

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.

External Link