できない.dev

IdentityFile

別名: identityfile / 秘密鍵の指定 / IdentitiesOnly

SSH クライアントが公開鍵認証に使う秘密鍵ファイルを指定する ssh_config のディレクティブ。
指定しない場合は既定の鍵名しか試されない。

公開:

定義

IdentityFile は OpenSSH クライアントの設定ディレクティブで、公開鍵認証に使う秘密鍵ファイルのパスを指定する。SSH では ~/.ssh/configHost ブロック内に書くのが一般的で、同じブロックに複数行書けば書いた順に試される。

詳細

このディレクティブを省略した場合、クライアントは ~/.ssh/id_rsa~/.ssh/id_ecdsa~/.ssh/id_ed25519 といった 既定の名前の鍵だけ を探す。~/.ssh/github_key のように独自の名前を付けた鍵は既定名に当たらないため、IdentityFile で明示しない限り認証の候補にすら入らない。

ssh-agent に鍵を登録している場合は、agent が持つ鍵も候補に加わる。
候補が多いとサーバ側の認証試行回数の上限に先に達し、本来使うはずの鍵に到達する前に切断されることがある。
使う鍵を 1 つに限定したいときは IdentitiesOnly yes を併記し、agent 由来の鍵を候補から外す。

よくある誤解

  • 鍵ファイルを置けば自動で使われる: 既定名以外は拾われない。SSH で「Permission denied (publickey)」が出て接続できない の代表的な原因である。
  • 書けば必ずその鍵で認証される: IdentitiesOnly yes が無い場合、agent の鍵が先に試されることがある。
    指定は候補の追加であって、限定ではない。

関連

設定そのものが読まれていない場合は、~/.ssh/config のパーミッションや Host パターンの綴りを先に確認する。ssh -v の出力に読み込んだ設定ファイルと試行した鍵が並ぶので、切り分けはそこから始めるのが早い。

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