SSH-AGENT(1)

名前
ssh-agent - 認証エージェント

書式
ssh-agent [-a bindするアドレス] [-c | -s] [-t 鍵のデフォルト生存時間] [-d] [コマンド [引数 ...]]

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

説明
ssh-agent は (RSA や DSA の) 公開鍵認証で使われる認証鍵を保持する プログラムです。基本的には、まず ssh-agent を X セッションあるいはログインセッションの始めに起動させ、 これ以外のすべてのウインドウやプログラムがその ssh-agent プログラムのクライアントとして起動するようにします。 エージェントは環境変数を使うことにより、他のマシンに ssh(1) を使ってログインするときに自動的に検出され、認証に利用できます。

オプションには次のようなものがあります:

-a bindするアドレス
    Unix ドメインソケットを bind_address に bind するようにします。 この値は、デフォルトでは /tmp/ssh-XXXXXXXXXX/agent.ppid になっています。

-c  標準出力 に C シェル用のコマンドを出力します。 環境変数 SHELL が csh 系のシェルになっているようなら、 これがデフォルトになります。

-s  標準出力 に Bourne シェル用のコマンドを出力します。 環境変数 SHELL が csh 系以外のシェルのようなら、これがデフォルトです。

-k  現在動いている認証エージェント ( 環境変数 SSH_AGENT_PID によって与えられている) を kill します。

-t 鍵のデフォルト生存時間
    エージェントに追加された鍵の最大生存時間のデフォルト値を指定します。 生存時間は秒数、あるいは sshd_config(5) で使われている形式で指定できます。ですが、この値よりも ssh-add(1) で値が指定されれば、そちらのほうが優先されます。 このオプションが指定されない場合、いちど追加された鍵は永久に存在しつづけます。

-d  デバッグモード。このオプションが指定されていると ssh-agent は fork しません。

コマンドラインが与えられた場合、そのコマンドは この認証エージェントの子プロセスとして起動されます。 与えたコマンドが終了した場合、認証エージェントも終了します。

最初、認証エージェントは鍵をまったく持たない状態で起動されます。 認証鍵をここに追加するには ssh-add(1) を使います。これを引数なしで起動すると、 ssh-add(1) は ~/.ssh/id_rsa, ~/.ssh/id_dsa および ~/.ssh/identity の各ファイルを追加します。 この identity ファイルにパスフレーズが必要な場合、 ssh-add(1) はそのパスフレーズを尋ねてきます (X11 を使っているときは、 ssh-add(1) は X のちょっとしたアプリケーションを使います。 X を使っていないときは端末を使って尋ねてきます)。 この後、identity ファイルに含まれている認証鍵が 認証エージェントに送られます。 認証エージェントには複数の鍵を格納することができ、 認証エージェントはこれらの鍵を自動的に使用します。 ssh-add -l を実行すると、現在その認証エージェントによって保持されている 鍵の一覧が表示されます。

認証エージェントは、ユーザのローカル PC やノートパソコン、あるいは端末で 実行されるものです。認証用のデータを他のマシンに置く必要はなく、 認証のためのパスフレーズがネットワーク上を流れることも決してありません。 しかし認証エージェントに対する接続は SSH のリモートログインを越えて 転送され、ユーザはその認証鍵によって与えられた権限をネットワーク上の どこでも安全に行使できるというわけです。

認証エージェントを使うためには、おもに 2 つの方法があります。 ひとつは、認証エージェントがいくつかの環境変数を export した状態で 新しい子プロセスを走らせる方法で、たとえば ssh-agent xterm & のようなものです。 もうひとつは認証エージェントにシェル用のコマンドを出力させ (これは sh(1) あるいは csh(1) どちらかの文法で生成されます)、 認証エージェントを呼び出したシェルがそのコマンドを評価 (eval) する方法で、たとえば 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 秘密鍵が 入っています。

~/.ssh/id_dsa
    そのユーザがプロトコル バージョン 2 で使う DSA 秘密鍵が 入っています。

~/.ssh/id_rsa
    そのユーザがプロトコル バージョン 2 で使う RSA 秘密鍵が 入っています。

/tmp/ssh-XXXXXXXXXX/agent.ppid
    認証エージェントに対する接続を保持する Unix ドメイン のソケットです。 このソケットは、所有者だけが読めるようになっているはずです。 このソケットは認証エージェントが終了するとき自動的に削除されます。

関連項目
ssh(1), ssh-add(1), ssh-keygen(1), sshd(8)

作者
OpenSSH は Tatu Ylonen による、フリーな オリジナル版 ssh 1.2.12 リリースから派生したものです。 Aaron Campbell、 Bob Beck、 Markus Friedl、 Niels Provos、 Theo de Raadt および Dug Song が多くのバグを取り除き、 新しい機能をふたたび追加して OpenSSH をつくりました。 SSH プロトコル バージョン 1.5 および 2.0 のサポートは Markus Friedl の貢献によるものです。