SSH-AGENT (1)

OpenSSH-7.3p1 日本語マニュアルページ (2016/10/15)


名前

ssh-agent
認証エージェント

書式

ssh-agent [-c |s] [-Dd ] [-a bindするアドレス ] [-E 鍵の指紋ハッシュ ] [-t 鍵のデフォルト生存時間 ] [コマンド [引数 ...] ]

ssh-agent [-c |s] -k


説明

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

認証エージェントには、起動時には何も秘密鍵がありません。鍵を追加するにはssh (1) (詳細はssh_config (5)AddKeysToAgentを参照)あるいはssh-add (1) を使います。ssh-agent 内には、複数の秘密鍵を同時に保持することができ、ssh (1) は鍵が存在している場合は自動的に使用します。ssh-add (1) は、鍵をssh-agent から除去したり、現在保持されている鍵の一覧を表示したりするのにも使えます。

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

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

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

-D
フォアグラウンド・モード。このオプションが指定された場合、Nmは fork しません。

-d
デバッグモード。このオプションが指定されていると、ssh-agent は fork せず、デバッグ情報を標準エラー出力に表示します。

-E 鍵の指紋ハッシュ
鍵の指紋を表示するさいに使われるハッシュ関数のアルゴリズムを指定します。とりうる値は:"md5"または"sha256"です。デフォルトでは"sha256"になっています。

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

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

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

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

認証エージェントは、ユーザのローカル 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 を保持します。

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


関連ファイル

$TMPDIR/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 の貢献によるものです。