できない.dev

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認証で蹴られる) の手順で、鍵の登録状況から確認する。

この記事は役立ちましたか?