OpenSSH-5.1p1 日本語マニュアルページ (2008/10/03)
認証エージェント
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するアドレス /tmp/ssh-XXXXXXXXXX/agent.<ppid>
になっています。-c
-d
ssh-agent
は fork しません。-k
-s
-t
鍵のデフォルト生存時間 コマンドラインが与えられた場合、そのコマンドはこの認証エージェントの子プロセスとして起動されます。与えたコマンドが終了した場合、認証エージェントも終了します。
最初、認証エージェントは鍵をまったく持たない状態で起動されます。認証鍵をここに追加するには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 ファイルに含まれている認証鍵が認証エージェントに送られます。認証エージェントには複数の鍵を格納することができ、認証エージェントはこれらの鍵を自動的に使用します。
認証エージェントは、ユーザのローカル 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
~/.ssh/id_dsa
~/.ssh/id_rsa
/tmp/ssh-XXXXXXXXXX/agent.<ppid>