EN JA
SSH-AGENT(1)
SSH-AGENT(1) FreeBSD General Commands Manual SSH-AGENT(1)

名称

ssh-agent認証エージェント

書式

ssh-agent [ -c | -s][ -dx][ -a bind_address][ -t life][ command [ arg ...]]

ssh-agent [ -c | -s] -k

解説

ssh-agent は、公開鍵の認証 (RSA、DSA、ECDSA) のために使用される秘密鍵を保持するプログラムです。それは、 ssh-agent が、X セッションまたはログインセッションの始めに開始され、他のすべてのウィンドウまたはプログラムが、ssh-agent プログラムへのクライアントとして開始されるというものです。 ssh(1) を使用して他のマシンにログインするとき、環境変数の使用を通して、エージェントを検索し、認証のために自動的に使用することができます。

オプションは、次の通りです:

-a bind_address
エージェントを UNIX N0 ドメインソケット bind_address にバインドします。デフォルトは、 $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid> です。
-c
stdout (標準出力) に C シェルコマンドを生成します。これは、 SHELL が、それがシェルの csh スタイルのように見えるなら、デフォルトです。
-d
デバッグモード。このオプションが指定されているとき、 ssh-agent は、fork しません。
-k
( SSH_AGENT_PID 環境変数によって与えられる) 現在のエージェントを kill します。
-s
stdout (標準出力) に Bourne シェルコマンドを生成しします。これは、 SHELL が、それがシェルの csh スタイルのように見えないなら、デフォルトです。
-t life
エージェントに追加された秘密鍵 (identity) の最大の存続期間のためのデフォルト値を設定します。存続期間は、秒単位または sshd_config(5) で指定される時間の形式で指定されます。 ssh-add(1) で秘密鍵 (identity) のために指定された存続期間は、この値を上書き (この値より優先) します。このオプションなしで、デフォルトの最大の存続期間は、永久となります。
-x
最後のクライアントが切断した後に終了します。

コマンド行が与えられるなら、これは、エージェントのサブプロセスとして実行されます。コマンドが死ぬ (終了する) とき、エージェントも死にます。

エージェントは、最初に秘密鍵を持っていません。鍵は、 ssh-add(1) を使用して追加されます。引数なしで実行されたとき、 ssh-add(1) は、ファイル ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa~/.ssh/identity を追加します。秘密鍵 (identity) ファイルにパスフレーズがあるなら、 ssh-add(1) は、端末があるなら、端末で、X11 で実行されているなら、小さな X11 プログラムから、パスフレーズを求めます。これらのどちらでもないなら、認証は、失敗します。次に、秘密鍵 (identity) をエージェントに送ります。いくつかの秘密鍵 (identity) をエージェントに格納することができます。エージェントは、自動的に、これらの秘密鍵 (identity) のいずれかを使用することができます。 ssh-add -l は、エージェントによって現在保持されている秘密鍵 (identity) を表示します。

エージェントは、ユーザのローカル PC、ラップトップまたは端末で実行されるということです。認証データは、あらゆる他のマシンに格納する必要はなく、認証パスフレーズは、決してネットワークに流れることはありません。しかしながら、エージェントへの接続は、SSH のリモートログインを越えて転送され、ユーザは、安全な方法でネットワークのどこでも秘密鍵 (identity) によって与えられた特権を使用することができます。

セットアップされたエージェントを得る主な 2 つの方法があります: 最初は、いくつかの環境変数がエクスポートされた新しいサブコマンドをエージェントが開始する、例えば、 ssh-agent xterm & いうことです。 2 番目は、エージェントが呼び出しているシェルで評価することができる ( sh(1) または csh(1) の構文のいずれかを生成することができる) 必要とされるシェルコマンドを印刷するということです、例えば、 sh(1) または ksh(1) のような Bourne タイプのシェルのためには、 eval `ssh-agent -s` で、 csh(1) と派生形のためには、 eval `ssh-agent -c` です。

その後、 ssh(1) は、これらの変数を見て、エージェントへの接続を確立するためにそれらを使用します。

エージェントは、その要求されたチャネルを越えて秘密鍵を決して送りません。代わりに、秘密鍵を要求する操作は、エージェントによって行なわれ、結果は、要求側に返されます。このように、秘密鍵は、エージェントを使用してクライアントに公開されません。

UNIX ドメインのソケットが作成され、このソケットの名前は、 SSH_AUTH_SOCK 環境変数に格納されます。ソケットは、現在のユーザにのみアクセス可能となります。この方法は、root または同じユーザの別のインスタンスよって容易に不正使用されます。

SSH_AGENT_PID 環境変数は、エージェントのプロセス ID を保持します。

コマンド行で与えられたコマンドが終了するとき、エージェントは、自動的に終了します。

関連ファイル

~/.ssh/identity
ユーザのプロトコルバージョン 1 の RSA 認証の秘密鍵 (identity) を含んでいます。
~/.ssh/id_dsa
ユーザのプロトコルバージョン 2 の DSA 認証の秘密鍵 (identity) を含んでいます。
~/.ssh/id_ecdsa
ユーザのプロトコルバージョン 2 の ECDSA 認証の秘密鍵 (identity) を含んでいます。
~/.ssh/id_rsa
ユーザのプロトコルバージョン 2 の RSA 認証の秘密鍵 (identity) を含んでいます。
$TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
認証エージェントへの接続のために使用される UNIX ドメインソケット。これらのソケットは、所有者によってのみ読み込み可能にするべきです。ソケットは、エージェントが終了するとき、自動的に削除されるべきです。

作者

OpenSSH は、Tatu Ylonen によってリリースされたオリジナルのフリーな ssh 1.2.12 の派生物です。 Aaron Campbell、Bob Beck、Markus Friedl、Niels Provos、 Theo de Raadt と Dug Song は、多くのバグを取り除き、新しい機能を再び追加し、OpenSSH を作成しました。 Markus Friedl は、SSH プロトコルバージョン 1.5 と 2.0 のためのサポートを寄贈しました。
November 21, 2010 FreeBSD