SSH-AGENT(1)

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

書式
ssh-agent コマンド 引数 ... ssh-agent [-c | -s] ssh-agent -k

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

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

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

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

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

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

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

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

認証エージェントを使うためには、おもに 2つの方法があります。 ひとつは、認証エージェントに新しい子プロセスを走らせる方法で、 このときエージェントはいくつかの環境変数を export させます。 もうひとつは認証エージェントにシェル用のコマンドを出力させ (これは sh(1) あるいは csh(1) どちらかの文法で生成されます)、 認証エージェントを呼び出したシェルがそのコマンドを評価 (eval) する方法です (訳注: 要するに後のプロセスに環境変数を渡せればよい)。 これ以後 ssh(1) は認証エージェントに接続するためにこれらの変数の内容を使います。

Unix ドメインのソケット (/tmp/ssh-XXXXXXXX/agent.<pid>) が作られ、そのソケットの名前が SSH_AUTH_SOCK 環境変数に入れられます。このソケットはそのユーザのみ がアクセス可能ですが、現在のところ root または同一ユーザの 別プロセスによって簡単に悪用される危険性があります。

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

(訳注: 認証エージェントに子プロセスを起動させた場合、) 指定したコマンドが終了すると、認証エージェントも自動的に終了します。

関連ファイル

$HOME/.ssh/identity
    そのユーザがプロトコル バージョン 1 で使う RSA 秘密鍵が 入っています。このファイルを他人に読ませてはいけません。 この鍵を作成するとき、パスフレーズを指定することがあります。 パスフレーズは、このファイルに含まれる秘密鍵を暗号化するのに 使われます。このファイルは ssh-agent が使うものではありませんが、ログイン時に ssh-add(1) を使うと、このファイルがデフォルトで認証エージェントに追加されます。

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

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

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

作者
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 の貢献によるものです。

日本語訳
新山 祐介 (euske@cl.cs.titech.ac.jp) 2001/5/24

当マニュアルページは氏のご好意により FreeBSD 日本語マニュアルに収録させていただいています。 翻訳についてのご意見、ご指摘がありましたら新山氏 <euske@cl.cs.titech.ac.jp>、および FreeBSD jpman プロジェクト <man-jp@jp.FreeBSD.org> までお送りください。

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