sshで複数の秘密鍵がある場合、クライアントからはどの秘密鍵が使われたかわからない

authorized_keysでの実行可能なコマンドの制限を試すため、すでにエージェント転送で接続できるサーバに、別の公開鍵を追加した。

その上で ssh -i ... で新しく追加した鍵で接続してみたのだが、コマンドの制限が効いていない。

-vvvとつけて詳細なログを吐かせても、ちゃんと-iで指定した秘密鍵を使っている……ように見える。

といった感じではまっていろいろ試行錯誤した結果、以下のことがわかった。

  • -vvvで出てくる秘密鍵のパスは、じっさいに使われている鍵とは限らない。
  • sshに指定した鍵だけ使わせるには、-o 'IdentitiesOnly yes'で行ける。

ということで、以下のようにすれば解決。

ssh -o 'IdentitiesOnly yes' -i /path/to/private_key ...

なお今回は接続先サーバのroot権限がなかったからクラアイント側から調査したが、権限があれば多分ログ見ればさすがにわかりそう。