SSH-AGENT (1)

OpenSSH-5.1p1 日本語マニュアルページ (2008/10/03)


名前

ssh-agent
認証エージェント

書式

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

ssh-agent [-c | Fl 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 系のシェルになっているようなら、これがデフォルトになります。

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

-k
現在動いている認証エージェント (環境変数SSH_AGENT_PID で指定されている) を kill します。

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

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

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

最初、認証エージェントは鍵をまったく持たない状態で起動されます。認証鍵をここに追加するには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 の貢献によるものです。