ssh-agent
別名: ssh-add / SSH エージェント
SSH の公開鍵認証に使う秘密鍵をメモリ上に保持し、接続のたびにパスフレーズを入力しなくても認証できるようにする OpenSSH のプログラム。
鍵の登録には ssh-add を使う。
公開:
定義
ssh-agent は、SSH の公開鍵認証に使う秘密鍵を保持しておく OpenSSH のプログラム。ssh-add で鍵を登録すると、パスフレーズの入力はその 1 回で済み、以後の ssh や git push はエージェントに認証の処理を任せる。
秘密鍵そのものがネットワークに送られることはない。
詳細
クライアントは、環境変数 SSH_AUTH_SOCK が指すソケットを通じてエージェントと通信する。
手動で起動するときは eval "$(ssh-agent -s)" とし、出力された変数を今のシェルに取り込む。
登録済みの鍵は ssh-add -l で一覧でき、ssh-add -D で全部消せる。
鍵はエージェントのメモリにだけあり、エージェントが終了すると失われる。~/.ssh/config に AddKeysToAgent yes を書くと、鍵ファイルを初めて使ったときに自動で登録される。
よくある誤解
- 一度 ssh-add すればずっと有効: 端末ごとに起動したエージェントは端末を閉じると終わり、鍵も消える(SSH の鍵を ssh-add しても毎回パスフレーズを聞かれる)。
ssh-add -tで寿命を付けた鍵も期限が来ると消える。 - エージェントに鍵が多いほど通りやすい: 鍵を順に試すため、サーバー側の認証試行回数の上限に先に達することがある。
使う鍵を絞るには IdentityFile とIdentitiesOnly yesを使う。
関連
push が SSH 認証で拒否されるときは Git push できない(SSH認証で蹴られる) の手順で、鍵の登録状況から確認する。